首页 > 解决方案 > 在构建 add_subdirectory(B) 之前安装 add_subdirectory(A) 头文件

问题描述

我是 cmake 的新手,我正在尝试在 UNIX 和 Windows 平台上构建我的代码。我有add_subdirectory(A)add_subdirectory(B)。如果我只构建add_subdirectory(A),它会将头文件安装到某个xyz位置,然后当我构建时add_subdirectory(B),它会使用以前安装xyz位置的头文件。但是当我尝试同时构建两者add_subdirectory(A)add_subdirectory(B),它会因缺少位置中的头文件而失败xyz,因为它们没有安装。所以我的问题是,有没有一种方法可以告诉 cmake 构建和安装add_subdirectory(A),然后开始构建add_subdirectory(B)

我试图在网上看,但没有运气。

我的主人CMakeLists.txt

add_subdirectory(TradeFlowCommonFrameworkLib/cpp/src)
add_subdirectory(TradeFlowCommonDataLib/cpp/src)

install(EXPORT Findfotmc DESTINATION ${INSTALL_FOTMC}/cmake)

----------------------------------------------------------------

标签: cmake

解决方案


添加子目录不会指定它们之间的依赖关系。您必须将您的第二个可执行文件/库显式链接到您的第一个库。

在您的 B 项目 (TradeFlowCommonDataLib/cpp/src) 的子 CMakeLists 中,您必须添加如下内容:

target_link_libraries(B A)

推荐阅读