【发布时间】:2014-02-04 09:19:26
【问题描述】:
几句话
我的问题是:有没有办法生成包含我正在为其编写 CMake 的项目和另一个项目(CMake 已经可用)的 Visual Studio 解决方案?
我在考虑使用add_subdirectory,但我不确定这是最好的解决方案,而且参数binary_dir 的含义对我来说不是很清楚。
更多细节
我有一个依赖于另一个 (A) 的 Visual Studio 项目 (B)。 我已经为 A 编写了 CMakeLists,并且能够生成 VS 项目并进行编译。
我已经为 B 编写了一个 CMakeLists。我能够为 B 配置 VS 项目,使其可以访问 A 的标头和库。一切都可以编译。
A
- CMakeLists.txt
- src
- *.cpp
B
- CMakeLists.txt
- src
- *.cpp
Build
- Build_A
- Build_B
但是,当我从 B 项目中更改 A 中的某些内容时(这是可能的,因为使用 Visual Studio,我可以从项目 B 访问 A 的标头),并且我尝试编译,A 没有被编译。
项目B只编译B。
我可以通过使用add_subdirectory 来改善这种情况。在 B 的 CMakeLists 中,我包含以下行:
add_subdirectory(PATH_TO_A A)
但是,使用此解决方案时,A 的编译文件存在重复。当我从项目 A 编译时,它们是在源外构建目录 BUILD_A 中生成的;当我从项目 B 编译时,它们是在源外构建目录BUILD_B\A 中生成的。
在从 B 的 CMakeLists 生成的解决方案中包含 A 项目并避免重复编译文件的最佳做法是什么?
附: 如果可能的话,我想避免重新编译所有内容两次。也就是说,如果我已经编译了A并且我需要第一次编译B,我想避免重新编译A的需要。
【问题讨论】:
标签: visual-studio visual-studio-2012 cmake