2012-03-19 86 views
7

我目前正在將一個Visual C++項目(內部有多個子項目)轉移到CMake上。在CMake中使用多個項目

有一件事,我不知道 - 基本上,包括頂級CMakeLists.txt文件的子項目,我只是利用add_subdirectory命令,並引用這些不同的子項目所存儲的目錄。

但是,我有一個項目是在相同的目錄作爲我的頂級CMakeLists.txt文件,所以我想知道是否仍有可能包含此文件? CMake的不允許我打電話給add_subdirectory現有PROJECT_BINARY_DIR(見下圖):

add_subdirectory(${PROJECT_BINARY_DIR}) #not allowed in CMake 

我想不出其他辦法,我包括此子項目到我的CMake的構建。有任何想法嗎?

回答

12

所有的add_subdirectory都是在其中添加一個CMakeLists.txt文件的子目錄,所以它不會讓你添加當前目錄。您可以簡單地添加CMake邏輯來在CMakeLists.txt文件中構建項目的這一部分。如果你想在邏輯中分離出來,那麼你可以把它放在build_project.cmake,然後用包括

include(build_project.cmake) 

可以包括許多其他的CMake文件,只要你喜歡,那CMake的代碼將被評估就好像它被內嵌粘貼一樣。所以所有普通的add_executable和類似的命令都可以工作。