天天看點

cmake學習(1)

最簡單的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)