我有一个这样的目录树:
libs
support
db
csv
patterns
support_qt
helpers
dialogs
等等。
现在,当我在support
级别中执行add_subdirectory
时,我可以添加db
和patterns
,并且文件将被收集。然而,在db
中,我添加了另一个引用csv
的add_subdirectory
,但不知何故,这被忽略了。
在support
中
set(SUPPORT_SOURCE
${CMAKE_CURRENT_SOURCE_DIR}/support_defs.h
${CMAKE_CURRENT_SOURCE_DIR}/support_dll_api.h
${CMAKE_CURRENT_SOURCE_DIR}/supportlib_namespace.h
${CMAKE_CURRENT_SOURCE_DIR}/dll_main.cpp
)
add_subdirectory (db)
add_subdirectory (patterns)
在db
中
set(SUPPORT_SOURCE ${SUPPORT_SOURCE}
${CMAKE_CURRENT_SOURCE_DIR}/column_types.h
${CMAKE_CURRENT_SOURCE_DIR}/dbcolumn.h
${CMAKE_CURRENT_SOURCE_DIR}/database_login.h
${CMAKE_CURRENT_SOURCE_DIR}/database_login.cpp
${CMAKE_CURRENT_SOURCE_DIR}/type_helper.h
${CMAKE_CURRENT_SOURCE_DIR}/type_helper.cpp
PARENT_SCOPE
)
add_subdirectory(csv)
以上工作正常,但在csv
中
set(SUPPORT_SOURCE ${SUPPORT_SOURCE}
${CMAKE_CURRENT_SOURCE_DIR}/csv.h
${CMAKE_CURRENT_SOURCE_DIR}/csv.cpp
PARENT_SCOPE
)
但是这些文件不包括在构建中。那么,我是否必须将add_subdirectory调用全部放入根文件中?
刚刚找到解决方案。我必须把add_subdirectory
放在set
命令之前。
add_subdirectory(csv)
set(SUPPORT_SOURCE ${SUPPORT_SOURCE}
${CMAKE_CURRENT_SOURCE_DIR}/column_types.h
${CMAKE_CURRENT_SOURCE_DIR}/dbcolumn.h
${CMAKE_CURRENT_SOURCE_DIR}/database_login.h
${CMAKE_CURRENT_SOURCE_DIR}/database_login.cpp
${CMAKE_CURRENT_SOURCE_DIR}/type_helper.h
${CMAKE_CURRENT_SOURCE_DIR}/type_helper.cpp
PARENT_SCOPE
)