不包括子目录中的CMake add_subdirectory



我有一个这样的目录树:

libs
   support
       db
          csv
       patterns
   support_qt
       helpers
       dialogs

等等。

现在,当我在support级别中执行add_subdirectory时,我可以添加dbpatterns,并且文件将被收集。然而,在db中,我添加了另一个引用csvadd_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
)

最新更新