CMake常用字段詳解 一

cmake_minimum_required(version) :指定cmake工具的最低版本

include_directories(dir):-I指定的頭文件路徑

link_directories(dir):-L包含的庫文件路徑

PROJECT(name):項目命名

add_subdirectory(math):指明本項目包含一個子目錄 math,這樣 math 目錄下的 CMakeLists.txt 文件和源代碼也會被處理 ;

LIBRARY_OUTPUT_PATH:庫生成的輸出目錄

EXECUTABLE_OUTPUT_PATH:可執行文件生成的輸出目錄

aux_source_directory(dir var):將dir目錄下所有文件自動存儲到var變量中

add_library(name SHARE source_set):用source_set變量包含的所有文件集合生成libname.so共享庫

add_library(name STATIC source_set):用source_set變量包含的所有文件集合生成libname.a靜態庫

add_executable(name source_set):用source_set變量包含的所有文件集合生成可執行文件name

target_link_libraries(name lib_set):指定通過add_executable或者add_library生成name目標時去鏈接的庫集合

install(TARGETS name_set DESTINATION dir):將name_set目標集合全部安裝到dir目錄

SET(var value_set):設置var的值爲value_set包含的值得集合

if(DEFINE XXXX) {}elseif(){}else{}endif():判斷XXX是否被定義的條件選擇邏輯

if(A_XXX STREQUAL B_XXX):判斷A_XXX與B_XXX字符串是否相等

CMAKE_INSTALL_PREFIX #make install 的安裝路徑

CMAKE_BUILD_TYPE #生成的目標爲debug或者release

CMAKE_C_FLAGS_DEBUG:debug模式下增加的c編譯參數

CMAKE_C_FLAGS_RELEASE:release模式下增加的c編譯參數

CMAKE_CXX_FLAGS_DEBUG:debug模式下增加的c++編譯參數

CMAKE_CXX_FLAGS_RELEASE:release模式下增加的c++編譯參數

CMAKE_C_FLAGS #gcc 的編譯參數指定,這個非常好用,一般通過set 修改其值

CMAKE_CXX_FLAGS #g++ 和上面CMAKE_C_FLAGS 類似

CMAKE_CURRENT_SOURCE_DIR # 當前CMakeLists.txt所在的目錄,主要用來定位某文件

CMAKE_CURRENT_BINARY_DIR # 當前CMakeLists.txt對應的編譯時的目錄

CMAKE_C_COMPILER #C編譯器

CMAKE_CXX_COMPILER #C++編譯器

 

---------------------檢查編譯器是否支持xxx特性(如c++版本類型)----------------------------------

include(CheckCXXCompilerFlag)

CHECK_CXX_COMPILER_FLAG("-std=c++11" COMPLILER_SUPPORT_CXX11)

CHECK_CXX_COMPILER_FLAG("-std=c++0x" COMPLILER_SUPPORT_CXX0X)

if(COMPILER_SUPPORT_CXX11)

SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -ldl")

elseif(COMPILER_SUPPORT_CXX0X)

SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x -ldl")

endif()

-------------------------------------------------------------------------------------------------------------------

 

message(STATUS "str"):輸出str字串

 

注意事項:

1.CMAKE的命令是不區分大小的,變量時區分大小寫的

2.CMake命令執行時,用-D定義的變量可以在CMakeList.txt中檢測到,常常用來在編譯時指定一

些必要條件;

3.CMake執行時,可以用-D指定CMakeList中(即CMake)的內部變量值,在CMakeList.txt中也

能被檢測到;

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章