我正在为我继承的项目设置一个Cmake构建环境。我有一个核心存储库,该存储库创建了可以加载“插件”的目标(dll目标)。我想将每个插件都保留在自己的存储库中(每个插件代表一个特定的硬件平台,应单独维护)。
我有一个名为“插件”的目录,可以根据需要在其中克隆这些存储库文件夹。
如何使“插件”文件夹中的CMakeLists.txt添加所有插件文件夹,而不为每个插件添加显式的add_sub目录?
我的目标是允许提供源代码外配置和调试/发布目标的构建脚本,也允许平台目标签出用户选择的平台的存储库,按要求配置和构建。这是我不确定如何设置的唯一作品。
答案 0 :(得分:0)
在执行示例程序时,我有一个CMake
宏,该宏枚举了当前文件夹的子目录:
#########################################################################################
macro(SUBDIRLIST result curdir)
FILE(GLOB children RELATIVE ${curdir} ${curdir}/*)
SET(dirlist "")
FOREACH(child ${children})
IF(IS_DIRECTORY ${curdir}/${child})
SET(dirlist ${dirlist} ${child})
ENDIF()
ENDFOREACH()
SET(${result} ${dirlist})
endmacro()
然后使用此宏在包含子目录的文件夹中创建以下CMakeLists.txt:
SUBDIRLIST(SUBDIRS ${CMAKE_CURRENT_SOURCE_DIR})
FOREACH(subdir ${SUBDIRS})
ADD_SUBDIRECTORY(${subdir})
ENDFOREACH()
当CMake
使用此父文件夹生成时,它将使用add_subidrectory()自动添加其中包含的每个文件夹