CMake
Перейти к навигации
Перейти к поиску
переменные
//set устанавливает пользовательскую переменную set(SOURCES main.cpp version.cpp) set(HEADERS version.h)
//встроенная переменная указания текущего пути (пути сборки)
${CMAKE_CURRENT_BINARY_DIR}
//встроенная переменная исходного пути (где лежит обрабатываемый CMakeLists.txt)
${CMAKE_CURRENT_SOURCE_DIR}
цели
//цель-бинарник с именем helloWorld, собирающийся из main.cpp add_executable(helloWorld main.cpp)
//цель-библиотека с именем libBL, собирающийся из lib.cpp lib.h add_library(libBL STATIC lib.cpp lib.h)
//цель-бинарник с именем binary, собирающийся из файлов, согласно переменным
add_executable(binary ${SOURCES} ${HEADERS})
//указания свойств к цели
set_target_properties(
helloWorld PROPERTIES
CXX_STARNDARD 11
CXX_STARDARD_REQUIRED ON
)
шаблон .h.in
//взять шаблон конфигурационного .h.in, заменить значения переменных и сохранить как .h в директории сборки
configure_file(
config.h.in
${CMAKE_CURRENT_BINARY_DIR}/config.h
)
линковка
//аналог "gcc -L ${CMAKE_CURRENT_BINARY_DIR}"
target_include_directories(
configure
PRIVATE
${CMAKE_CURRENT_BINARY_DIR}
)
//слинковать цель helloWorld с целью libBL target_link_libraries(helloWorld libBL)
find_package(sumLib CONFIG REQUIRED) target_link_libraries(mainLib SumLib::sumLib)
переход в дочерний CMakeLists.txt
add_subdirectory(lib) find_package(sumLib CONFIG REQUIRED)
install
//при обработке цели sumLib создать структуру директорий
install(
TARGETS sumLib EXPORT sumLibTargets
LIBRARY DESTINATION lib
ARCHIVE DESTINATION lib
INCLUDES DESTINATION include
)
//скопировать файл(ы) в include install(FILES sumLib.h DESTINATION include)
//экспорт namespace и создание конф.файл для родительской директивы find_package
install(
EXPORT sumLibTargets
FILE sumLibConfig.cmake
NAMESPACE SumLib::
DESTINATION lib/cmake/SumLib
)