2011-11-01 94 views
2

我使用cmake构建由十几个项目组成的应用程序。我们使用的cmake自动生成的x86,x64的解决方案,并且两个VS 2005和2010年设置库之间的依赖关系(cmake)

这是我们组织的一个想法:

  • A.LIB,它没有依赖
  • 湾LIB,它没有依赖
  • c.lib,这取决于a和b
  • d.exe,这取决于ç

每个项目的谎言在它自己的子目录中,并有它自己的CMakeLists.txt文件。为了跟踪我们为不同平台生成的lib/dll,我们使用_x86/_x64和_vc80/_vc100(例如,a_x86_vc100.lib)自动修复每个lib/dll,并使用_d进行调试(例如, a_x86_vc100_d.lib)。

在的CMakeLists.txt文件,我使用target_link_libraries到每个目标用相应的库链接,例如:

TARGET_LINK_LIBRARIES(C调试_ $ {VS} _ $ {PLATFORM} d优化 一个 $ {VS_DIR} $ {PLATFORM}调试b $ {VS} _ $ {PLATFORM} ð优化 b $ {VS_DIR} _ $ {PLATFORM})

我在Visual Studio中,不显示各个项目之间不同的“项目依赖项”。我想知道是否有我想念的东西,或者它是否与我们的图书馆后期修复不兼容。

干杯,

朱利

回答

1

如果他们都在同一个项目,我认为他们是,你只需要指定目标名称和调试/释放会为你处理。我认为你是链接到实际的lib文件而不是目标。

尝试

TARGET_LINK_LIBRARIES(C A B)

TARGET_LINK_LIBRARIES(d C)它知道,c取决于a和b

就是它#!