【发布时间】:2011-12-19 16:22:50
【问题描述】:
我正在使用 CMake 构建一个由十几个项目组成的应用程序。我们使用 CMake 为 x86、x64 以及 Visual Studio 2005 和 Visual Studio 2010 自动生成解决方案。
这是我们组织的一个想法:
- a.lib,没有依赖关系
- b.lib,没有依赖关系
- c.lib,依赖a和b
- d.exe,依赖c
每个项目都位于自己的子目录中,并有自己的CMakeLists.txt 文件。为了跟踪为我们不同平台生成的库/DLL 文件,我们自动使用 _x86/_x64 和 _vc80/_vc100(例如 a_x86_vc100.lib)对每个库/DLL 文件进行后修复,并使用 _d 进行调试(例如,a_x86_vc100_d.lib)。
在 CMakeLists.txt 文件中,我使用 target_link_libraries 将每个目标链接到相应的库,例如:
TARGET_LINK_LIBRARIES(c debug a_${VS}_${PLATFORM}d 优化 a${VS_DIR}${PLATFORM} 调试 b${VS}_${PLATFORM}d 优化 b${VS_DIR}_${PLATFORM})
在 Visual Studio 中,不会出现各个项目之间的不同“项目依赖关系”。我想知道我是否遗漏了什么,或者它是否与我们的库后修复不兼容。
【问题讨论】:
标签: c++ visual-studio cmake