2012-11-02 152 views

回答

2

沒有,但它是一個簡單的項目設置:

project(myProject) 

enable_language(CXX) 

file(GLOB SRC_FILES *.cpp) 

include_directories(${PROJECT_SOURCE_DIR}) 

add_executable(myExe ${SRC_FILES}) 

假設你正在一個可執行文件。如果您正在製作圖書館,則應使用add_library。如果您的項目在srcinclude等子目錄中,只需更改路徑。

+0

那麼你可以使用通配符? – sashoalm

+0

http://cmake.org/cmake/help/v2.8.8/cmake.html#command:file是的,GLOB選項使用簡單的REGEX。 – tpg2114

+0

請注意,這不是推薦的方式。手動添加文件比較好,但這是一種快速而骯髒的方式。如果是從某種意義上說「完成」的項目,那麼您不會添加/刪除源文件,那麼就沒有問題了。 – tpg2114

0

(我知道這是要求相當長一段時間以前,但無論如何,我會發表我的答案,以供將來參考。)

我認爲更好的主意是不是有一個CMakeLists.txt自動將所有來源有每次運行時都使用一個glob,而是一個靜態的。我想最初的意思是一個腳本,它掃描當前目錄(遞歸)的源文件並將它們添加到CMake文件中。這可能會節省很多時間將每個源文件的名稱複製到CMake文件。因此:讓我們自動化吧!

創建一個名爲cmake-project.sh具有以下內容的文件:

#!/bin/bash 

# use the first argument as project name 
PROJECT_NAME=$1 

# find source files, but exclude the build directory 
PROJECT_SOURCES=$(find . -iname "*.cpp" -not -path "./build/*") 

# find header files, but exclude the build directory; 
# only print the name of the directory; only print unique names 
PROJECT_SOURCE_DIR=$(find . -iname "*.h" -not -path "./build/*" \ 
    -printf "%h\n" | sort -u) 

# The standard content of the CMakeLists.txt can be edited here 
cat <<EOF> CMakeLists.txt 
cmake_minimum_required (VERSION 2.8) 

set(PROJ_NAME  $PROJECT_NAME) 
set(PROJ_SOURCES $PROJECT_SOURCES) 

project(\${PROJ_NAME}) 

include_directories(${PROJECT_SOURCE_DIR}) 

add_executable(\${PROJ_NAME} \${PROJ_SOURCES}) 
EOF 

然後,使文件可執行文件chmod +x cmake-project.sh。現在,您可以在根目錄中運行./cmake-project.sh [your_project_name]以自動創建一個靜態(即不包含glob)CMakeLists.txt

當然,如有必要,您必須改編一些東西(例如使用.cc而不是.cpp),但您明白了。