Форум программистов, компьютерный форум, киберфорум
Кроссплатформенная разработка
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
0 / 0 / 0
Регистрация: 18.08.2016
Сообщений: 6
1

CMake и организация сборки проекта

12.08.2017, 23:42. Показов 2167. Ответов 1

В общем, вопрос таков: каким образом можно "наставить" cmake, чтобы он собирал бинарники в одной директории, объектники отправлял в другую, а в третьей хранился весь cmake-кэш. Очень напрягает весь этот мусор в одной папке с кэшом. Толком ответа не нашел в ру-сегменте, а с англ. у меня не все так радужно. Решил задать вопрос злесь. Может кто разбирается в этом. Заранее благодарю

Добавлено через 12 часов 3 минуты
После продолжительных поисков в анг. яз. сегменте интернета, все же нашел ответ на свой вопрос. Решил оставить ответ, мало ли кому пригодится.
SET(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin) - вывод всех бинарников в данную папку (каталог)
SET(LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR}/lib) - вывод всех библиотек (в том числе и объектных файлов) в данную папку (каталог).
Собственно, ссылка на другие полезные глобальные переменные cmake (англ.): https://cmake.org/Wiki/CMake_U... _Variables
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.08.2017, 23:42
Ответы с готовыми решениями:

Cmake проект сборки документации
Здравствуйте, хочу сделать проект со сборкой документации, что-то типо doxygen target example. В...

Ошибка генерации CodeBlocks проекта CMake`ом
Пожалуйста, подскажите как правильно сгенерировать CodeBlocks проект с CMake`ом. Опишу по шагам что...

Импорт существующего cmake проекта в creator
Добрый день! Есть рабочий проект, в основе -- один большой CMakeLists.txt Проблем две: 1)...

Проблема сборки проекта в QT
При сборке проекта возникает следующая ошибка: Выполняется сборка проекта first... Настройки не...

1
Эксперт С++
8554 / 4130 / 908
Регистрация: 15.11.2014
Сообщений: 9,328
29.11.2017, 15:32 2
пример №1
глобальные настройки выхлопа компиляции
Код
###############################################################################
cmake_minimum_required(VERSION 2.8)

#--- имя проекта совпадает с именем каталога проекта
get_filename_component(PROJECT_NAME ${CMAKE_CURRENT_SOURCE_DIR} NAME)

#--- имя главной цели. CXX значает, что проект на с++
project( ${PROJECT_NAME} CXX )
###############################################################################

#--- указываем путь, где должен быть расположен результат сборки

set (BIN ${CMAKE_CURRENT_SOURCE_DIR}/product)
set (DLL ${CMAKE_CURRENT_SOURCE_DIR}/product)
set (LIB ${CMAKE_CURRENT_SOURCE_DIR}/product)

# сначала выставляем дефолтно-глобальные 
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${LIB}) 
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${DLL}) 
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${BIN}) 
# затем выставляем дефолтные-глобальные под каждую возможную конфигурацию 
foreach( OUTPUTCONFIG ${CMAKE_CONFIGURATION_TYPES} ) 
    string( TOUPPER ${OUTPUTCONFIG} OUTPUTCONFIG ) 
    set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY_${OUTPUTCONFIG} ${CMAKE_ARCHIVE_OUTPUT_DIRECTORY}) 
    set(CMAKE_LIBRARY_OUTPUT_DIRECTORY_${OUTPUTCONFIG}  ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}) 
    set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_${OUTPUTCONFIG} ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}) 
endforeach()

###############################################################################

#--- определяем состав исходных файлов библиотеки
FILE (GLOB MY_SOURCE ${CMAKE_CURRENT_SOURCE_DIR}/src/*)

#--- определяем пути для хэдэров
set (MY_HEADERS_PATH ${CMAKE_CURRENT_SOURCE_DIR}/include)

include_directories( ${MY_HEADERS_PATH}   )
###############################################################################

add_executable( ${PROJECT_NAME} ${MY_SOURCE} )

###############################################################################

пример №2
настройки выхлопа компиляции
для каждого отдельного таргета сборки

Код
###############################################################################
cmake_minimum_required(VERSION 2.8)

#--- имя проекта совпадает с именем каталога проекта
get_filename_component(PROJECT_NAME ${CMAKE_CURRENT_SOURCE_DIR} NAME)

#--- имя главной цели. CXX значает, что проект на с++
project( ${PROJECT_NAME} CXX )

###############################################################################

#--- определяем состав исходных файлов библиотеки
FILE (GLOB MY_SOURCE ${CMAKE_CURRENT_SOURCE_DIR}/src/*)

#--- определяем пути для хэдэров
set (MY_HEADERS_PATH ${CMAKE_CURRENT_SOURCE_DIR}/include)

include_directories( ${MY_HEADERS_PATH}   )
###############################################################################

add_executable( ${PROJECT_NAME} ${MY_SOURCE} )

# обязательно после определения цели
set (BIN ${CMAKE_CURRENT_SOURCE_DIR}/product)
set (DLL ${CMAKE_CURRENT_SOURCE_DIR}/product)
set (LIB ${CMAKE_CURRENT_SOURCE_DIR}/product)

# сначала дефолтные 
set_target_properties( 
    ${PROJECT_NAME} 
    PROPERTIES ARCHIVE_OUTPUT_DIRECTORY ${LIB}
    PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${DLL}
    PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${BIN}
)

# теперь под каждую из возможных конфигураций 
foreach( OUTPUTCONFIG ${CMAKE_CONFIGURATION_TYPES} ) 
    string( TOUPPER ${OUTPUTCONFIG} OUTPUTCONFIG ) 
    set_target_properties( 
        ${PROJECT_NAME} 
        PROPERTIES ARCHIVE_OUTPUT_DIRECTORY_${OUTPUTCONFIG} ${LIB}
        PROPERTIES LIBRARY_OUTPUT_DIRECTORY_${OUTPUTCONFIG} ${DLL}
        PROPERTIES RUNTIME_OUTPUT_DIRECTORY_${OUTPUTCONFIG} ${BIN}
    ) 
endforeach()

###############################################################################
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.11.2017, 15:32

Изменить каталог сборки проекта
Проект еще не большой, я его переименовал, измений файл *.pro, все роботает. Только когда...

Ошибка во время сборки проекта
Всем привет. У меня след. ошибка .. "Ошибка во время сборки проекта 1 Во время выполнения сборки...

Ошибка сборки проекта по андройд QML
Здравствуйте, уважаемые форумчане! Изучаю qml на примере - пытаюсь создать приложение под андройд...

Значение переменной на этапе сборки проекта
Всем тилимилидрям:) Вообщем возникла необходимость такая, нужна переменная которую буду...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.