CMAKE安裝(TARGETS在子目錄中 [c++]


Answers

即使這將有助於看到子目錄中包含的CMakeLists.txt文件,我猜它們包含add_executable和/或add_library語句來創建你的東西。
另外,由於你的例子,我猜你正在使用目錄的相同名稱作為你的目標。
也就是說,您應該知道,在子目錄中的CMakeLists.txt文件中定義的符號在父目錄中的CMakeLists.txt文件的上下文中默認是不可見的。 因此,您應該將您的install語句移動到您的子目錄中的CMakeLists.txt文件中。
如果我的想法是正確的,這應該解決問題。 否則,我強烈建議你在你的問題上也提到上面提到的其他文件的內容。

無論如何,錯誤是相當清楚的。
包含名為X的目標的install語句的文件不包含產生該目標的目標創建語句( add_executable和其他語句),所以它繼續說該目標在該目錄中不存在。

Question

考慮下面的CMakeLists.txt文件:

add_subdirectory(execA)
add_subdirectory(libB)

install(TARGETS execA libB
        RUNTIME DESTINATION bin
        LIBRARY DESTINATION lib
        ARCHIVE DESTINATION lib)

我收到以下錯誤:

install TARGETS given target "execA" which does not exist in this
  directory

execAlibB有自己的CMakeList.txt文件,位於project目錄下,以及生成目錄我正在運行cmakecmake .. ):

project
  |------ CMakeList.txt (the one with the code)
  |----execA
  |      \- .cpp, .hpp and CMakelist.txt
  |----libB
  |      \- .cpp, .hpp and CMakelist.txt
  |---- lib
  |---- bin
  \---- build (where I´m commanding: $ cmake ..

幫助需要修復錯誤。