2011-11-01 49 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

就是它#!