0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

CMake語法詳解

我快閉嘴 ? 來源:混說Linux ? 作者:混說Linux ? 2022-09-14 11:52 ? 次閱讀

CMake 是什么我就不用再多說什么了,相信大家都有接觸才會看一篇文章。對于不太熟悉的開發(fā)人員可以把這篇文章當(dāng)個查找手冊。

1. CMake語法 1.1 指定cmake的最小版本
cmake_minimum_required(version 版本號)

例如:

cmake_minimum_required(version 2.8)

1.2 定義工程名稱

#定義工程名稱 
project(項(xiàng)目名稱)

例如:

project(MyTest)

1.3 顯示定義變量

set(var [value])

例如:

# 第一種用法,生成代碼文件列表
#先直接設(shè)置SRC_LIST的值
set(SRC_LIST add.h add.cpp)
#然后再在SRC_LIST中追加main.cpp 
set(SRC_LIST ${SRC_LIST} main.cpp)

# 第二種用法,設(shè)置庫生成目錄或者可執(zhí)行文件生成目錄
set( LIBRARY_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/lib/linux) 
set( EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin)

1.4 設(shè)置編譯類型

# 編譯靜態(tài)庫
add_library(庫名稱 STATIC 代碼文件名稱) 

# 編譯動態(tài)庫
add_library(庫名稱 SHARED 代碼文件名稱) 

# 編譯可執(zhí)行程序
add_executable(可執(zhí)行程序名 代碼文件名稱)

例如:

# 編譯靜態(tài)庫
add_library(add STATIC add.h add.cpp)
add_library(add STATIC ${ADD_SRC} ${ADD_HDR})

# 編譯動態(tài)庫
add_library(add  SHARED add.h add.cpp) 
add_library(add SHARED  ${ADD_SRC} ${ADD_HDR})

# 編譯可執(zhí)行程序
add_executable(main add.h add.cpp mai.cpp)
add_executable(main ${MAIN_SRC} ${MAIN_HDR})

1.5 指定靜態(tài)庫或者動態(tài)庫編譯輸出目錄

例如將當(dāng)前編譯的靜態(tài)庫或者動態(tài)庫輸出到當(dāng)前項(xiàng)目文件夾lib子目錄下:

set(LIBRARY_OUTPUT_PATH  ${PROJECT_SOURCE_DIR}/lib)

1.6 指定可執(zhí)行程序編譯輸出目錄

例如將當(dāng)前可執(zhí)行程序輸出到當(dāng)前項(xiàng)目文件夾的bin子目錄下:

#設(shè)定可執(zhí)行二進(jìn)制文件的目錄
set( EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin)

1.7 設(shè)置鏈接庫搜索目錄

例如將鏈接庫搜索目錄設(shè)置為當(dāng)前項(xiàng)目文件夾下lib/linux文件夾:

link_directories( ${PROJECT_SOURCE_DIR}/lib/linux)

1.8 設(shè)置包含目錄

例如將包含目錄設(shè)置為當(dāng)前項(xiàng)目文件夾下include文件夾:

include_directories(${PROJECT_SOURCE_DIR}/include)

1.9 設(shè)置宏定義

#預(yù)定義宏
add_definitions(-D宏名稱)

例如:

add_definitions(-DWINDOWS)
add_definitions(-DLINUX)

1.10 鏈接靜態(tài)庫

link_libraries(
    靜態(tài)庫1
    靜態(tài)庫2
    靜態(tài)庫3
    ...
)

注意,link_libraries中的靜態(tài)庫為全路徑,常與1.7 link_directories 搭配使用,例如:

lib1.a lib2.a在目錄${PROJECT_SOURCE_DIR}/lib/linux下,則先設(shè)置鏈接目錄,再鏈接相應(yīng)的庫:

#設(shè)置鏈接目錄
link_directories( ${PROJECT_SOURCE_DIR}/lib/linux)
link_libraries(
        lib1.a
        lib2.a
)

1.11 鏈接動態(tài)庫

target_link_libraries(所需生成的文件名稱 所需鏈接的動態(tài)庫名稱)

例如:

target_link_libraries(main dl)

1.12 link_libraries 和 target_link_libraries 區(qū)別

在cmake語法中,link_libraries和target_link_libraries是很重要的兩個鏈接庫的方式,雖然寫法上很相似,但是功能上有很大區(qū)別:

(1) link_libraries用在add_executable之前,target_link_libraries用在add_executable之后
(2) link_libraries用來鏈接靜態(tài)庫,target_link_libraries用來鏈接導(dǎo)入庫,即按照header file + .lib + .dll方式隱式調(diào)用動態(tài)庫的.lib庫

1.13 file語法

1.13.1 將文件夾所有的類型的文件添加到文件列表

例如將當(dāng)前文件夾下所有.cpp文件的文件名加入到MAIN_SRC中,將當(dāng)前文件夾下所有.h加入到MAIN_HDR中。

file(GLOB MAIN_SRC ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp)
file(GLOB MAIN_HDR ${CMAKE_CURRENT_SOURCE_DIR}/*.h)

例如將當(dāng)前文件夾子目錄src文件夾下所有.cpp文件的文件名加入到MAIN_SRC中,將當(dāng)前文件夾子目錄src文件夾下所有.h加入到MAIN_HDR中。

file(GLOB MAIN_SRC ${CMAKE_CURRENT_SOURCE_DIR}/src/*.cpp)
file(GLOB MAIN_HDR ${CMAKE_CURRENT_SOURCE_DIR}/src/*.h)

1.13.2 遞歸搜索該文件夾,將文件夾下(包含子目錄)符合類型的文件添加到文件列表

例如將當(dāng)前文件夾下(包括子目錄下)所有.cpp文件的文件名加入到MAIN_SRC中,所有.h加入到MAIN_HDR中:

file(GLOB_RECURSE MAIN_SRC ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp)
file(GLOB_RECURSE MAIN_HDR ${CMAKE_CURRENT_SOURCE_DIR}/*.h)

1.14 List操作

常見的List操作包括:

list(LENGTH  ) 
list(GET   [ ...]
   )
list(APPEND  [ ...])
list(FIND   )
list(INSERT    [ ...])
list(REMOVE_ITEM   [ ...])
list(REMOVE_AT   [ ...])
list(REMOVE_DUPLICATES )
list(REVERSE )
list(SORT )

1.14.1 List移除指定項(xiàng)

例如從MAIN_SRC移除指定項(xiàng):

list(REMOVE_ITEM MAIN_SRC ${CMAKE_CURRENT_SOURCE_DIR}/add.cpp)

1.14.2 將兩個List鏈接起來

# 搜索當(dāng)前目錄
file(GLOB  MAIN_SRC ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp)
file(GLOB  MAIN_HDR ${CMAKE_CURRENT_SOURCE_DIR}/*.h)

# 遞歸搜索當(dāng)前目錄下src子目錄
file(GLOB_RECURSE MAIN_SRC_ELSE  ${CMAKE_CURRENT_SOURCE_DIR}/src/*.cpp)
file(GLOB_RECURSE MAIN_HDR_ELSE  ${CMAKE_CURRENT_SOURCE_DIR}/src/*.h)

# 將MAIN_SRC_ELSE中的值添加到MAIN_SRC 
# 將MAIN_HDR_ELSE中的值添加到MAIN_HDR 
list(APPEND MAIN_SRC ${MAIN_SRC_ELSE})
list(APPEND MAIN_HDR ${MAIN_HDR_ELSE})

1.15 添加子文件夾

例如:

add_subdirectory(src)
該語句會在執(zhí)行完當(dāng)前文件夾CMakeLists.txt之后執(zhí)行src子目錄下的CMakeLists.txt

1.16 message輸出消息機(jī)制

輸出正常:

message(STATUS "Enter cmake ${CMAKE_CURRENT_LIST_DIR}")

輸出警告:

message(WARNING "Enter cmake ${CMAKE_CURRENT_LIST_DIR}")

輸出錯誤:

message(FATAL_ERROR "Enter cmake ${CMAKE_CURRENT_LIST_DIR}")

1.17 安裝

install 指令用于定義安裝規(guī)則,安裝的內(nèi)容包括二進(jìn)制可執(zhí)行文件、動態(tài)庫、靜態(tài)庫以及文件、目錄、腳本等。

1.17.1 目標(biāo)文件安裝 例如:
install(TARGETS util
  RUNTIME DESTINATION bin
  LIBRARY DESTINATION lib
  ARCHIVE DESTINATION lib)

ARCHIVE指靜態(tài)庫,LIBRARY指動態(tài)庫,RUNTIME指可執(zhí)行目標(biāo)二進(jìn)制,上述示例的意思是:

如果目標(biāo)util是可執(zhí)行二進(jìn)制目標(biāo),則安裝到${CMAKE_INSTALL_PREFIX}/bin目錄 如果目標(biāo)util是靜態(tài)庫,則安裝到安裝到${CMAKE_INSTALL_PREFIX}/lib目錄 如果目標(biāo)util是動態(tài)庫,則安裝到安裝到${CMAKE_INSTALL_PREFIX}/lib目錄。

1.17.2 文件夾安裝

install(DIRECTORY include/ DESTINATION include/util)
這個語句的意思是將include/目錄安裝到include/util目錄。

1.18 設(shè)置編譯選項(xiàng)

設(shè)置編譯選項(xiàng)可以通過add_compile_options命令,也可以通過set命令修改CMAKE_CXX_FLAGS或CMAKE_C_FLAGS。方式1:

set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -march=native -O3 -frtti -fpermissive -fexceptions -pthread")

方式2:

add_compile_options(-march=native -O3 -fexceptions -pthread -fPIC)

這兩種方式的區(qū)別在于:

add_compile_options命令添加的編譯選項(xiàng)是針對所有編譯器的(包括c和c++編譯器),而set命令設(shè)置CMAKE_C_FLAGS或CMAKE_CXX_FLAGS變量則是分別只針對c和c++編譯器的。
1.19 預(yù)定義變量

1.19.1 基本變量

  • PROJECT_SOURCE_DIR

  • 我們使用cmake命令后緊跟的目錄,一般是工程的根目錄;

  • PROJECT_BINARY_DIR

    執(zhí)行cmake命令的目錄,通常是${PROJECT_SOURCE_DIR}/build;

  • CMAKE_INCLUDE_PATH

    系統(tǒng)環(huán)境變量,非cmake變量;

  • CMAKE_LIBRARY_PATH

    系統(tǒng)環(huán)境變量,非cmake變量;

  • CMAKE_CURRENT_SOURCE_DIR

    當(dāng)前處理的CMakeLists.txt所在的路徑;

  • CMAKE_CURRENT_BINARY_DIR

    target編譯目錄(使用ADD_SURDIRECTORY(src bin)可以更改此變量的值 ,SET(EXECUTABLE_OUTPUT_PATH <新路徑>)并不會對此變量有影響,只是改變了最終目標(biāo)文件的存儲路徑);
  • CMAKE_CURRENT_LIST_FILE

    輸出調(diào)用這個變量的CMakeLists.txt的完整路徑;
  • CMAKE_CURRENT_LIST_LINE

    輸出這個變量所在的行;
  • CMAKE_MODULE_PATH

    定義自己的cmake模塊所在的路徑(這個變量用于定義自己的cmake模塊所在的路徑,如果你的工程比較復(fù)雜,有可能自己編寫一些cmake模塊,比如SET(CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake),然后可以用INCLUDE命令來調(diào)用自己的模塊);
  • EXECUTABLE_OUTPUT_PATH

    重新定義目標(biāo)二進(jìn)制可執(zhí)行文件的存放位置;
  • LIBRARY_OUTPUT_PATH

    重新定義目標(biāo)鏈接庫文件的存放位置;
  • PROJECT_NAME

    返回通過PROJECT指令定義的項(xiàng)目名稱;
  • CMAKE_ALLOW_LOOSE_LOOP_CONSTRUCTS

    用來控制IF ELSE語句的書寫方式;

1.19.2 操作系統(tǒng)變量

  • CMAKE_MAJOR_VERSION

    cmake主版本號,如3.4.1中的3;
  • CMAKE_MINOR_VERSION

    cmake次版本號,如3.4.1中的4;
  • CMAKE_PATCH_VERSION

    cmake補(bǔ)丁等級,如3.4.1中的1;
  • CMAKE_SYSTEM

    操作系統(tǒng)名稱,包括版本名,如Linux-2.6.22;

  • CAMKE_SYSTEM_NAME

    操作系統(tǒng)名稱,不包括版本名,如Linux;
  • CMAKE_SYSTEM_VERSION

    操作系統(tǒng)版本號,如2.6.22;
  • CMAKE_SYSTEM_PROCESSOR

    電腦處理器名稱,如i686;
  • UNIX

    在所有的類UNIX平臺為TRUE,包括OS X和cygwin,Linux/Unix操作系統(tǒng);
  • WIN32

    在所有的win32平臺為TRUE,包括cygwin,Windows操作系統(tǒng);
  • APPLE

    蘋果操作系統(tǒng);

例如操作系統(tǒng)判斷方式一:
if(WIN32)
    message(STATUS “This operating system is Windows.”)
elseif(UNIX)
    message(STATUS “This operating system is Linux.”)
elseif(APPLE)
    message(STATUS “This operating system is APPLE.”)
endif(WIN32)

操作系統(tǒng)判斷方式二:
if (CMAKE_SYSTEM_NAME MATCHES "Linux")
    message(STATUS "current platform: Linux ")
elseif (CMAKE_SYSTEM_NAME MATCHES "Windows")
    message(STATUS "current platform: Windows")
elseif (CMAKE_SYSTEM_NAME MATCHES "FreeBSD")
    message(STATUS "current platform: FreeBSD")
else ()
    message(STATUS "other platform: ${CMAKE_SYSTEM_NAME}")
endif (CMAKE_SYSTEM_NAME MATCHES "Linux")

1.19.3 開關(guān)選項(xiàng)

  • BUILD_SHARED_LIBS

    控制默認(rèn)的庫編譯方式。如果未進(jìn)行設(shè)置,使用ADD_LIBRARY時又沒有指定庫類型,默認(rèn)編譯生成的庫都是靜態(tài)庫;

  • CMAKE_C_FLAGS

    設(shè)置C編譯選項(xiàng),也可以通過指令A(yù)DD_DEFINITIONS()添加;
  • CMAKE_CXX_FLAGS

    設(shè)置C++編譯選項(xiàng),也可以通過指令A(yù)DD_DEFINITIONS()添加;
  • CMAKE_C_COMPILER

    指定C編譯器;
  • CMAKE_CXX_COMPILER

    指定C++編譯器;
  • CMAKE_BUILD_TYPE==::build 類型(Debug, Release, …)

    CMAKE_BUILD_TYPE=Debug

1.19.4 環(huán)境變量

設(shè)置環(huán)境變量:
set(env{name} value)

調(diào)用環(huán)境變量:

$env{name}

例如:

message(STATUS "$env{name}")

1.19.5 CMAKE_INCLUDE_CURRENT_DIR

自動添加CMAKE_CURRENT_BINARY_DIR和CMAKE_CURRENT_SOURCE_DIR到當(dāng)前處理 的CMakeLists.txt。相當(dāng)于在每個CMakeLists.txt加入:

include_directories(${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR})

1.20 條件判斷

1.20.1 邏輯判斷和比較

  • if (expression):expression 不為空時為真,false的值包括(0,N,NO,OFF,FALSE,NOTFOUND);
  • if (not exp):與上面相反;
  • if (var1 AND var2):如果兩個變量都為真時為真;
  • if (var1 OR var2):如果兩個變量有一個為真時為真;
  • if (COMMAND cmd):如果 cmd 確實(shí)是命令并可調(diào)用為真;
  • if (EXISTS dir) if (EXISTS file):如果目錄或文件存在為真;
  • if (file1 IS_NEWER_THAN file2):當(dāng) file1 比 file2 新,或 file1/file2 中有一個不存在時為真,文件名需使用全路徑;
  • if (IS_DIRECTORY dir):當(dāng) dir 是目錄時為真;
  • if (DEFINED var):如果變量被定義為真;
  • if (var MATCHES regex):給定的變量或者字符串能夠匹配正則表達(dá)式regex 時為真,此處 var 可以用 var 名,也可以用 ${var};
  • if (string MATCHES regex):給定的字符串能夠匹配正則表達(dá)式regex時為真。

1.20.2 數(shù)字比較

  • if (variable LESS number)

    如果variable小于number時為真;
  • if (string LESS number)

    如果string小于number時為真;
  • if (variable GREATER number)

    如果variable大于number時為真;
  • if (string GREATER number)

    如果string大于number時為真;
  • if (variable EQUAL number)

    如果variable等于number時為真;
  • if (string EQUAL number)

    如果string等于number時為真。

1.20.3 字母表順序比較

  • if (variable STRLESS string)
  • if (string STRLESS string)
  • if (variable STRGREATER string)
  • if (string STRGREATER string)
  • if (variable STREQUAL string)
  • if (string STREQUAL string)

1.21 循環(huán)

1.21.1 foreach

start 表示起始數(shù),stop 表示終止數(shù),step 表示步長
foreach(loop_var RANGE start stop [step])
    ...
endforeach(loop_var)

1.21.2 while

while(condition)
    ...
endwhile()

1.22 自動檢測編譯器是否支持C++11

include(CheckCXXCompilerFlag)
CHECK_CXX_COMPILER_FLAG("-std=c++11" COMPILER_SUPPORTS_CXX11)
CHECK_CXX_COMPILER_FLAG("-std=c++0x" COMPILER_SUPPORTS_CXX0X)
if(COMPILER_SUPPORTS_CXX11)
    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
elseif(COMPILER_SUPPORTS_CXX0X)
    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x")
else()
    message(STATUS "The compiler ${CMAKE_CXX_COMPILER} has no C++11 support. Please use a different C++ compiler.")
endif()

1.23 CMake生成VS解決方案將項(xiàng)目放置在設(shè)定文件夾下

例如,我們在工程中引用了許多的第三方開源庫,這些庫的源碼與自己所寫的代碼需要進(jìn)行區(qū)分和隔離,通常情況下會單獨(dú)開一個third篩選器存儲這些第三方庫的項(xiàng)目,怎么做?

第一步:

在第三方庫的CMakeLists.txt中cmake_minimum_required(VERSION 2.6)中加上set_property(GLOBAL PROPERTY USE_FOLDERS On)

第二步:在生成編譯目標(biāo)的語法之后,如:

add_executable(demo demo.cpp) # 生成可執(zhí)行文件
add_library(common STATIC util.cpp) # 生成靜態(tài)庫
add_library(common SHARED util.cpp) # 生成動態(tài)庫或共享庫

加入一句:

set_target_properties(${第三方庫項(xiàng)目名稱} PROPERTIES FOLDER “目標(biāo)文件夾名稱”)

2. 錯誤解決方案 2.1 Cannot specify link libraries for target “/…/…/lib/linux/libMyDll.a” which 這個問題要將生成執(zhí)行文件、靜態(tài)庫、動態(tài)庫的聲明:
add_executable(demo demo.cpp) # 生成可執(zhí)行文件
add_library(common STATIC util.cpp) # 生成靜態(tài)庫
add_library(common SHARED util.cpp) # 生成動態(tài)庫或共享庫

放在

target_link_libraries()

之前。

2.2 警告:檢測時鐘錯誤,您的創(chuàng)建可能是不完整的

在項(xiàng)目根目錄下執(zhí)行命令:
touch *
更新所有文件時間。
審核編輯:湯梓紅
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 操作系統(tǒng)
    +關(guān)注

    關(guān)注

    37

    文章

    6846

    瀏覽量

    123419
  • 語法
    +關(guān)注

    關(guān)注

    0

    文章

    44

    瀏覽量

    9837
  • CMake
    +關(guān)注

    關(guān)注

    0

    文章

    28

    瀏覽量

    1284

原文標(biāo)題:CMake常用命令的一些整理

文章出處:【微信號:混說Linux,微信公眾號:混說Linux】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    cmake是什么?cmake的特性和編譯原理(cmake原理和cmake編譯過程)

    CMake是一個開源、跨平臺的工具系列,是用來構(gòu)建、測試和打包軟件。
    的頭像 發(fā)表于 07-18 10:53 ?4711次閱讀
    <b class='flag-5'>cmake</b>是什么?<b class='flag-5'>cmake</b>的特性和編譯原理(<b class='flag-5'>cmake</b>原理和<b class='flag-5'>cmake</b>編譯過程)

    CMake手冊的相關(guān)資料分享

    CMake 手冊詳解(一)https://www.cnblogs.com/coderfenghc/archive/2012/06/16/CMake_ch_01.htmlcmake快速入門https
    發(fā)表于 11-05 09:05

    單片機(jī)點(diǎn)燈的基本語法代碼詳解

    【單片機(jī)】點(diǎn)燈基本語法代碼詳解代碼詳解#include #include //功能:實(shí)現(xiàn)P1口左移#define uchar unsigned charunsigned char code
    發(fā)表于 02-16 06:34

    C_基本語法詳解大全完整版

    電子專業(yè)單片機(jī)相關(guān)知識學(xué)習(xí)教材資料——C_基本語法詳解大全完整版
    發(fā)表于 07-25 09:49 ?0次下載

    Cmake學(xué)習(xí)的總結(jié)(二)

    大家好,上次給大家分享了第一篇 cmake 文章:cmake學(xué)習(xí)總結(jié)(一),今天繼續(xù)給大家分享cmake。那么廢話就不多說,開始內(nèi)容分享。
    的頭像 發(fā)表于 12-24 17:54 ?647次閱讀

    Jack的嵌入式Linux開發(fā)筆記——008——cmake的用法

    CMake 手冊詳解(一)https://www.cnblogs.com/coderfenghc/archive/2012/06/16/CMake_ch_01.htmlcmake快速入門https
    發(fā)表于 11-02 10:36 ?1次下載
    Jack的嵌入式Linux開發(fā)筆記——008——<b class='flag-5'>cmake</b>的用法

    如何使用CMake工具套件構(gòu)建CUDA應(yīng)用程序

    我希望這篇文章向您展示了 CMake 如何自然地支持構(gòu)建 CUDA 應(yīng)用程序。如果您是 CMake 的現(xiàn)有用戶,請?jiān)囉?CMake 3 . 9 并利用改進(jìn)的 CUDA 支持。如果您不是 CMa
    的頭像 發(fā)表于 04-01 17:42 ?4565次閱讀
    如何使用<b class='flag-5'>CMake</b>工具套件構(gòu)建CUDA應(yīng)用程序

    RT-Thread V4.1.0新特性CMake介紹與構(gòu)建CMake工程

    ? ? CMake 支持 在 RT-Thread 4.1.0 正式發(fā)布版中,添加了對 CMake 的支持。開發(fā)者可以使用 SCons 工具來生成 CMakeLists.txt 文件。 為何要支持
    的頭像 發(fā)表于 05-24 19:20 ?3040次閱讀

    RT-Thread 4.1.0的CMake構(gòu)建教程

    CMake 支持 在 RT-Thread 4.1.0 正式發(fā)布版中,添加了對 CMake 的支持。開發(fā)者可以使用 SCons 工具來生成 CMakeLists.txt 文件。 為何要支持 CMake
    的頭像 發(fā)表于 05-25 11:06 ?3386次閱讀

    Arduino語法詳解含示例詳解

    Arduino語法詳解_含示例詳解
    發(fā)表于 07-19 14:09 ?6次下載

    CMake用法詳解

    CMake用法詳解
    發(fā)表于 10-25 16:28 ?2次下載

    CMake的實(shí)戰(zhàn)教程-1

    CMake 是一個跨平臺的構(gòu)建系統(tǒng)生成工具。它使用平臺無關(guān)的 CMake 清單文件CMakeLists.txt,指定工程的構(gòu)建過程;源碼樹的每個路徑下都有這個文件。CMake 產(chǎn)生一個適用于具體平臺的構(gòu)建系統(tǒng),用戶使用這個系統(tǒng)構(gòu)
    的頭像 發(fā)表于 02-14 10:42 ?721次閱讀
    <b class='flag-5'>CMake</b>的實(shí)戰(zhàn)教程-1

    跨平臺編譯工具CMake語法詳解

    cmake 是一個跨平臺、開源的構(gòu)建系統(tǒng)。它是一個集軟件構(gòu)建、測試、打包于一身的軟件。
    的頭像 發(fā)表于 03-08 15:54 ?1363次閱讀

    在Linux下如何使用CMake編譯程序

    CMake是開源、跨平臺的構(gòu)建工具,可以讓我們通過編寫簡單的配置文件去生成本地的Makefile,這個配置文件是獨(dú)立于運(yùn)行平臺和編譯器的,這樣就不用親自去編寫Makefile了,而且配置文件可以直接
    的頭像 發(fā)表于 11-08 16:15 ?6488次閱讀
    在Linux下如何使用<b class='flag-5'>CMake</b>編譯程序

    CMake構(gòu)建后的項(xiàng)目結(jié)構(gòu)解析

    一、 CMake構(gòu)建后的項(xiàng)目結(jié)構(gòu)解析(Analysis of the Project Structure After CMake Build) 1.1 CMake構(gòu)建后的目錄結(jié)構(gòu)(Directory
    的頭像 發(fā)表于 11-10 10:27 ?2147次閱讀
    <b class='flag-5'>CMake</b>構(gòu)建后的項(xiàng)目結(jié)構(gòu)解析