2010-09-07 196 views
1

我正在使用CMake,我想嘗試使它成爲我的子目錄,而不是散佈在我的項目或其根目錄中的文件。CMake子目錄

我有一個目錄佈局project/cmake/CMakeLists.txtproject/binproject/source,所以人們可以很容易地刪除CMake的東西,如果他們想。我唯一的問題是,可能有辦法做到這一點,我不知道。目前它會產生一堆垃圾,包括一個project/cmake/bin/obtap.dir/home/jookia/Programming/obtap/source文件夾。

cmake_minimum_required(VERSION 2.6) 
project(obtap) 
add_definitions(-g -Wall) 
add_executable(../bin/obtap ../source/main.cpp) 

它編譯得很好,它輸出正確的目錄。但我的問題是這樣的: 有沒有辦法刪除project/cmake/bin目錄和可選的,有沒有辦法沒有所有的CMake的東西,而是隻生成一個生成文件,所以我有兩個文件,CMakeLists.txt和Makefile?

+0

你是什麼意思刪除bin目錄?爲什麼'rm -fr project/cmake/bin'不符合你的需求? – tibur 2010-09-07 10:13:39

回答

5

CMake FAQ所述,生成的Makefiles包含庫和源代碼的完整路徑,因此沒有簡單的方法來分發由CMake生成的構建樹。

1

我相信你想應該所謂出源的建設,這可以通過生成一個單獨的目錄中間文件由在一個專用的目錄運行的cmake來取得的成績,對你的情況,你可以試試下面的命令:

mkdir -p project/bld/ 
cd project/bld/ 
cmake project/cmake 

現在你得到所有在項目/ BLD目錄下生成CMake的東西,只要你想刪除所有這些事情,只需要運行:

rm -fr project/bld/ 

您甚至可以通過設置不同的構建樹來獲取多個不同的配置文件。

如果您想要控制生成的可執行輸出路徑,使其不會隱藏在深度嵌套cmake中間二進制樹中,可能會出現一個問題;答案是您可以設置變量CMAKE_CURRENT_BINARY_DIR來定製可執行輸出的絕對路徑,或者只需使用cmake -Eadd_custom_command命令將可執行文件複製出來即可。