我正在使用CMake构建一个由十几个项目组成的应用程序。我们使用CMake自动生成x86,x64以及Visual Studio 2005和Visual Studio 2010的解决方案。
以下是我们组织的想法:
每个项目都在自己的子目录中,并有自己的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调试_ $ {VS} _ $ {PLATFORM} d优化 a $ {VS_DIR} $ {PLATFORM}调试b $ {VS} _ $ {PLATFORM} d优化 B'/ EM> $ {VS_DIR} _ $ {PLATFORM})
在Visual Studio中,不会显示各个项目之间的不同“项目依赖关系”。我想知道是否有我想念的东西,或者它是否与我们的库修复后不兼容。
答案 0 :(得分:1)
如果它们都在同一个项目中,我认为它们都是,你只需要指定目标名称,就会为你处理调试/发布。我认为您链接到实际的库文件而不是目标。
尝试:
TARGET_LINK_LIBRARIES(c a b)
TARGET_LINK_LIBRARIES(d c) # It knows that c depends on a and b
就是这样!