【发布时间】:2015-06-04 11:47:57
【问题描述】:
我有一个这样的目录树:
libs
support
db
csv
patterns
support_qt
helpers
dialogs
等等
现在当我在support 级别执行add_subdirectory 时,我可以添加db 和patterns 并收集文件。但是在db 中,我添加了另一个add_subdirectory 引用csv,但不知何故这被忽略了。
在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 调用都放到根文件中吗?
【问题讨论】:
-
PARENT_SCOPE 只上一级。我认为使用 CACHE INTERNAL 全局变量会更好,例如
set(SUPPORT_SOURCE ${SUPPORT_SOURCE} ${CMAKE_CURRENT_SOURCE_DIR}/dbcolumn.h [...] CACHE INTERNAL "")但我不确定它如何与多次设置的变量一起使用。
标签: cmake