2011-03-21 81 views
3

我嘗試從一個項目構建兩個庫(稱爲A和B)。我在root cmake文件中使用add_subdirectory cmake命令。圖書館B依賴於庫A.爲依賴關係的共享庫安裝EXPORT問題

當我嘗試添加
install( TARGETS B EXPORT B PUBLIC_HEADER DESTINATION "include/B" LIBRARY DESTINATION "lib" ARCHIVE DESTINATION "lib" )
install(EXPORT B DESTINATION "./") cmake的警告我有關使用install(EXPORT...錯誤線。
它打印
CMake Error: INSTALL(EXPORT "B" ...) includes target "B" which requires target "A" that is not in the export set.

回答

4

錯誤消息已經告訴你,你的出口只有一個項目,而這取決於其他項目。最簡單的解決方案是導出這兩個項目。如果它們都建立在同一的CMakeLists.txt,你可以簡單地調用

install(TARGETS A B ...) 

如果沒有,那麼你可能有一個頂層的CMakeLists.txt(在您使用add_subdirectory)。你可以在那裏設置一個安裝目標,我們稱之爲「MyInstall」。而在你的子目錄參閱本頂層安裝目標

在你的子目錄...

install(TARGETS A EXPORT MyInstall ...) 

爲靶B類似,然後導出「MyInstall」頂層的CMakeLists.txt:

install(EXPORT MyInstall ...) 
+0

非常感謝!有用! – 2011-03-21 14:54:38