CMAKE自動構建

2021-07-09 22:31:00 字數 2953 閱讀 1488

cmake 入門實戰

cmake 手冊詳解

兩個自己寫的cmakelists.txt用到了常用的編譯功能

# cmake 最低版本號要求

cmake_minimum_required (version 2.8)

#指定c編譯器

set(cmake_c_compiler "arm-none-linux-gnueabi-gcc")

#指定c++交叉編譯器

set(cmake_cxx_compiler "arm-none-linux-gnueabi-g++")# 標頭檔案

include_directories(/mnt/hgfs/share/build_libeventarm/include)

# 庫路徑

link_directories(/mnt/hgfs/share/build_libeventarm/lib)

# 專案資訊

project (demo)

#指定程式版本

set (demo_version_major 1)

set (demo_version_minor 0)

# 指定生成目標

add_executable(demo main.cpp)

# 引用庫

target_link_libraries(demo event)

# 指定 mathfunctions 庫的安裝路徑

#install (targets mathfunctions destination bin)

#install (files mathfunctions.h destination include)

# 指定安裝路徑

install (targets demo destination bin)

#install (files "$/config.h" destination include)

# 構建乙個 cpack 安裝包

include (installrequiredsystemlibraries)

#set (cpack_resource_file_license "$/license.txt")

set (cpack_package_version_major "$")

set (cpack_package_version_minor "$")

include (cpack)

#生成二進位制安裝包

#cpack -c cpackconfig.cmake

#生成原始碼安裝包

#cpack -c cpacksourceconfig.cmake

#make 最低版本號要求

cmake_minimum_required (version 2.8)

#指定c編譯器

set(cmake_c_compiler "gcc")

#指定c++編譯器

set(cmake_cxx_compiler "g++")

#支援gdb

#set(cmake_build_type "debug")

#set(cmake_cxx_flags_debug "$env -o0 -wall -g -ggdb")

#set(cmake_cxx_flags_release "$env -o3 -wall")

# 標頭檔案

#include_directories(/mnt/hgfs/share/build_libeventarm/include)

# 庫路徑

#link_directories(/mnt/hgfs/share/build_libeventarm/lib)

# 專案資訊

project (demo)

# 查詢當前目錄下的所有原始檔

# 並將名稱儲存到 dir_srcs 變數

aux_source_directory(. dir_srcs)

# 新增 src 子目錄

add_subdirectory(../../src obj)

# 指定生成目標 

add_executable(demo main.cpp)

# 新增鏈結庫

target_link_libraries(demo src)

# 加入乙個配置標頭檔案,用於處理 cmake 對原始碼的設定

configure_file (

"$/config.h.in"

"$/config.h"

)option (use_mydef "use provided define" on)

if (use_mydef)

message(status "use my define")

endif (use_mydef)

# 啟用測試

enable_testing()

add_test (test_usemydef demo)

set_tests_properties (test_usemydef properties pass_regular_expression "run testvalueinit.+ test successfully")

add_test (test_usemydef1 demo)

set_tests_properties (test_usemydef1 properties pass_regular_expression "run testassignment\\(\\) test successfully")

#rm -rf cmakefiles cmakecache.txt makefile cmake_install.cmake demo

#rm -rf obj/* 

-----另乙個資料夾的cmakelists.txt

# 查詢當前目錄下的所有原始檔

# 並將名稱儲存到 dir_lib_srcs 變數

aux_source_directory(. dir_lib_srcs)

# 生成鏈結庫

add_library (src $)

Cmake 構建程式

cmake 是乙個跨平台的自動化建構系統,它使用乙個名為 cmakelists.txt 的檔案來描述構建程式,可以產生標準的構建檔案,如 unix 的 makefile。cmakelists.txt 需要手工編寫,也可以通過編寫指令碼進行半自動的生成。cmake 提供了比 autoconfig 更簡...

Cake 0 C Make自動化構建 簡介

cake是c make的縮寫,是乙個基於c dsl的自動化構建系統。它可以用來編譯 複製檔案以及資料夾,執行單元測試,壓縮檔案以及構建nuget包等等。熟悉大名鼎鼎的make的小夥伴,應該已經知道cake大致是個什麼樣的工具了,cake具有以下幾個特點 方便編寫 使用基於c 的dsl,非常易於編寫自...

cmake構建qt工程

如何選擇?using cmake to build qt projects 一文中說 儘管如此,如果簡單qt的工程都不知道怎麼用 cmake 構建,複雜的工程,就更不知道如何使用 cmake 了。還是從簡單的學起吧 include include qdebug int main int argc,c...