我目前正在配置我的项目的构建,并决定拆分CMakeLists.txt
为负责单个构建子任务(如测试、打包、编译等)的子文件。问题是cmake
子文件需要有关如何完成任务的信息。所以我决定在包含模块之前需要设置一些变量。看起来像
CpackMylib.cmake
:
if(NOT DEFINED MYLIB_PACKAGE_NAME)
message(FATAL_ERROR "MYLIB_PACKAGE_NAME variable must be set")
endif()
if(NOT DEFINED MYLIB_VERSION_MAJOR)
message(FATAL_ERROR "MYLIB_VERSION_MAJOR variable must be set")
endif()
if(NOT DEFINED MYLIB_VERSION_MINOR)
message(FATAL_ERROR "MYLIB_VERSION_MINOR variable must be set")
endif()
if(NOT DEFINED MYLIB_VERSION_PATCH)
message(FATAL_ERROR "MYLIB_VERSION_PATCH variable must be set")
endif()
set(CPACK_PACKAGE_VERSION_MAJOR ${MYLIB_VERSION_MAJOR})
set(CPACK_PACKAGE_VERSION_MINOR ${MYLIB_VERSION_MINOR})
set(CPACK_PACKAGE_VERSION_PATCH ${MYLIB_VERSION_PATCH})
set(CPACK_DEBIAN_PACKAGE_NAME "${MYLIB_PACKAGE_NAME}-${MYLIB_VERSION_MAJOR}")
set(CPACK_DEBIAN_PACKAGE_FILE_NAME ${MYLIB_PACKAGE_NAME}-${MYLIB_VERSION_MAJOR})
#other settings...
include(CPack)
和根CMakeLists.txt
:
set(MYLIB_VERSION_MAJOR 0)
set(MYLIB_VERSION_MINOR 0)
set(MYLIB_VERSION_PATCH 1)
set(MYLIB_PACKAGE_NAME ${PROJECT_NAME})
include(cmake/CpackMylib.cmake)
所以我需要定义项目特定的变量,这些变量将用于使用CPack
. 我是新手CMake
,这样做似乎很自然。但我不确定在处理CMake
.
CMake
定义子模块需要的所有变量并在根目录中提供它们是否有意义CMakeLists.txt
?