最簡單的cmake寫法
PROJECT(hello)
ADD_EXCUTABLE(hello main.cpp)
-
PROJECT使用
PROJECT(projectname [CXX] [C] [Java])
該指令用于定義工程名稱,還可以指定語言,預設支援所有語言。
-
ADD_EXCUTABLE
add exexutable file 增加一個可執行檔案
ADD_EXCUTABLE(hello main.cpp)
生成一個檔案名為hello的可執行檔案
如果為多檔案就是ADD_EXCUTABLE(hello main.cpp xx.cpp)或ADD_EXCUTABLE(hello main.cpp;xx.cpp)
多個檔案可以用;來分離
-
SET使用
SET使用是用于定義變量使用
SET(VAR [VALUE] [CACHE TYPE DOCSTRING [FORCE]])
PROJECT(hello)
SET(LIST main.cpp)
ADD_EXCUTABLE(hello ${LIST})
SET(LIST main.cpp) 或者SET(LIST "main.cpp")都是可以的
${}進行變量的引用
- projectname_BINARY_DIR(PROJECT_BINARY_DIR) 和 projectname_SOURCE_DIR (PROJECT_SOURCE_DIR)
PROJECT(hello)
ADD_EXCUTABLE(hello main.cpp)
MESSAGE(STATUS "This is BINARY dir: " ${hello_BINARY_DIR})
MESSAGE(STATUS "This is SOURCE dir: " ${hello_SOURCE_DIR})
PROJECT_BINARY_DIR是指cmake指令執行所在路徑
PROJECT_SOURCE_DIR是指CMakeLists.txt的所在路徑
以上完成CMakeLists.txt編寫之後
在CMakeLists.txt路徑下使用cmake .指令生成makefile檔案
也會列印出hello_BINARY_DIR和 hello_SOURCE_DIR
這時候PROJECT_BINARY_DIR和PROJECT_SOURCE_DIR是等價的。也就是目前源碼的目錄。
當然也可以在自己建個新目錄,執行cmake (CMakeLists.txt路徑),就在新目錄下生成了makefile檔案,不影響源代碼
這時候PROJECT_BINARY_DIR和PROJECT_SOURCE_DIR顯示就是不同路徑。
~/code/cmake/T2/build]$cmake ..
内部CMakeLists.txt隻剩下一句
ADD_EXCUTABLE(HELLO main.cpp)
外部CMakeLists.txt
PROJECT(HELLO)
ADD_SUBDIRECTORY(src bin)