CMAKE學習筆記

2021-09-30 10:30:45 字數 1671 閱讀 1286

方法1:

cmake中有兩個變數用於指定輸出檔案的位置,通過設定這兩個變數executable_output_path和library_output_path的值指定exe檔案和lib檔案放置的目錄,如

set(executable_output_path )

set(library_output_path )

對於支援多個build配置(如release,debug等)的情況,cmake會為每乙個配置生成乙個子目錄。根據當前使用的build配置,exe或lib檔案實際上會被放置在/debug或/release中。

方法2:

通過設定target的屬性archive_output_directory,library_output_directory和runtime_output_directory為指定輸出目錄。對於多配置的generator,cmake會附加每個配置的子目錄到指定輸出目錄。如果不希望將不同配置下生成的target放置到各自配置的子目錄中,可以同時設定target的屬性archive_output_directory_,library_output_directory_和runtime_output_directory_。上述屬性分別作用於三種不同型別target的輸出:可執行檔案總是被作為rumtime target,靜態庫總是被作為archive target,module庫總是被作為library target,在windows平台,shared library的dll部分作為runtime target,對應的import library作為archive target。如要輸出所有配置的可執行target到$/bin目錄中,

set_target_properties($ properties runtime_output_directory $/bin)

set_target_properties($ properties runtime_output_directory_debug $/bin)

set_target_properties($ properties runtime_output_directory_release $/bin)

將產生的target放置在編譯樹的bin資料夾中。

方法3:

設定cmake_library_output_directory、cmake_archive_output_directory、cmake_runtime_output_directory為指定目錄,相應型別的target將輸出到指定路徑。cmake使用上述變數的值初始化對應的(方法二中)目標屬性。對於多配置的generator,target將會輸出到指定目錄下配置子目錄中。若不希望輸出到配置子目錄中,則需要設定相應配置的值,如cmake_archive_output_directory_。

參考資料:

cmake幫助文件

設定cmake__postfix變數,cmake會在target輸出檔名後新增字尾。如,通常將生成的庫檔案的debug版新增字尾d,libad.dll,release版的輸出檔案為liba.dll。

set(cmake_debug_postfix "d")

根據cmake的語法

target_link_libraries([lib1 [lib2 [...]]]

[[debug|optimized|general] ] ...)

其中debug,optimized和general指出緊接其後的庫只用於對應的build型別。

CMake學習筆記

cmake是乙個跨平台的安裝編譯工具,能夠生成各種各樣的makefile或者project檔案。cmake並不直接構建出最終的軟體,而是產生標準的構建檔案 即工程檔案,如unix下的makefile或windows下的c project檔案 然後構建者就可以使用平台的ide環境進行常規構建了。在wi...

Cmake學習筆記

環境 centos7 cmake version 2.8.12.2 常用命令 cmake minimum directoy viersion 2.8 注 version只能大寫 project your project name 這個順序一定要靠前,不然後面會有報錯 aux source direc...

Cmake學習筆記

參考 project hello 指定工程名cmake minimum required version 3.14 指定 cmake 最低編譯版本 獲取指定目錄下的原始檔 c,cu,cpp 方式一 aux source directory src src list 方式二 file glob src...