欧美性猛交xxxx免费看_牛牛在线视频国产免费_天堂草原电视剧在线观看免费_国产粉嫩高清在线观看_国产欧美日本亚洲精品一5区

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

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

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

CMake基本指令簡述

CHANBAEK ? 來源:編程圈子 ? 作者:編程圈子 ? 2023-03-13 15:41 ? 次閱讀

一、CMake 基本指令

1. ADD_DEFINITIONS

給編譯增加參數(shù)定義,如向 C/C++編譯器添加-D 參數(shù),例:

ADD_DEFINITIONS(-DENABLE_DEBUG -DABC123),多個參數(shù)使用空格分割。

宏定義 #ifdef ENABLE_DEBUG #endif 會讓上面指令生效。

2. ADD_DEPENDENCIES

增加 make 里編譯依賴關(guān)系。

ADD_DEPENDENCIES(target-name depend-target1 depend-target2 ...)

兩個target有依賴關(guān)系時,使用此指令可以自動按順序編譯依賴,最后再連接目標。

3.ADD_EXECUTABLE

定義可執(zhí)行文件的指令:

ADD_EXECUTABLE(hello main.cpp)

4.ADD_LIBRARY

調(diào)用其它庫,語法:

add_library( [STATIC | SHARED | MODULE]
            [EXCLUDE_FROM_ALL]
            source1 [source2 ...])
  • 其中表示鏈接庫文件的名字,全局唯一;庫的源文件可指定,也可用target_sources()后續(xù)指定。

  • 庫的類型: STATIC(靜態(tài)庫)、SHARED(動態(tài)庫)、MODULE(模塊庫)之一;如果不設(shè)置,也可以通過全局的 BUILD_SHARED_LIBS 來指定。

    windows下,如果dll沒有export任何信息,則不能使用SHARED,要標識為MODULE。

添加的庫會被輸出到以下幾個目錄:

  • ARCHIVE_OUTPUT_DIRECTORY
  • LIBRARY_OUTPUT_DIRECTORY
  • RUNTIME_OUTPUT_DIRECTORY
  • 設(shè)置EXCLUDE_FROM_ALL,可使這個library排除在all之外,即必須明確點擊生成才會生成。

5. ADD_SUBDIRECTORY

ADD_SUBDIRECTORY(source_dir [binary_dir] [EXCLUDE_FROM_ALL])

這個指令用于向當前工程添加存放源文件的子目錄,并可以指定中間二進制和目標二進制存放的位置。

  • EXCLUDE_FROM_ALL 參數(shù)的含義是將這個子目錄的所有target排除在all target列表之外,這樣當執(zhí)行make時,這個子目錄的所有target就不會被編譯。

6. CMAKE_MINIMUM_REQUIRED

CMAKE_MINIMUM_REQUIRED(VERSION versionNumber [FATAL_ERROR])

檢查cmake的版本,要求最低版本為versionNumber。例如 CMAKE_MINIMUM_REQUIRED(VERSION 2.5 FATAL_ERROR) 。

7. INCLUDE_DIRECTORIES

INCLUDE_DIRECTORIES([AFTER|BEFORE] [SYSTEM] dir1 [dir2 ...])

指定頭文件的搜索路徑。

例:

include_directories(/usr/local/include)

來讓庫文件搜索以/usr/local/include為基礎(chǔ),然后在main函數(shù)前寫上:

#include “opencv/cv.h"

8. LINK_DIRECTORIES

LINK_DIRECTORIES(directory1 directory2 ...)

添加需要鏈接的庫文件目錄,相當于g++命令的-L選項的作用。 該指令有時候不一定需要,因為find_package和find_library指令可以得到庫文件的絕對路徑。

一般自己寫的動態(tài)庫文件放在自己新建的目錄下時,可以用該指令定位,如:

LINK_DIRECTORIES("/home/my/mylib/bin/mylibs")

9. LINK_LIBRARIES

LINK_LIBRARIES(library1 library2 ...)

添加需要鏈接的庫文件路徑,注意這里是全路徑,要用在add_executable之前。示例:

LINK_LIBRARIES("/home/my/mylib/bin/mylibs/aaa.so")

10. TARGET_LINK_LIBRARIES

TARGET_LINK_LIBRARIES(target library1

為庫或二進制可執(zhí)行文件添加庫鏈接,要用在add_executable之后。 上述指令中的target是指通過add_executable()和add_library()指令生成已經(jīng)創(chuàng)建的目標文件。示例:

TARGET_LINK_LIBRARIES(myProject hello),連接libhello.soTARGET_LINK_LIBRARIES(myProject libhello.a)

11. PKG_CHECK_MODULES

pkg_check_modules(

pkg_check_modules 是 CMake 自己的 pkg-config 模塊 的一個用來簡化的封裝:你不用再檢查 CMake 的版本,加載合適的模塊,檢查是否被加載,等等,參數(shù)和傳給 find_package 的一樣:先是待返回變量的前綴,然后是包名(pkg-config 的)。這樣就定義了_INCLUDE_DIRS和其他的這類變量,后續(xù)的用法就與 find_package 一致。

二、 CMake的宏、模塊、函數(shù)

1. 宏 macro定義:

macro( [arg1 [arg2 [arg3 ...]]])
...
endmacro([name])

2. function定義:

function( [arg1 [arg2 [arg3 ...]]])
...
endfunction([name])

函數(shù)和宏都有默認內(nèi)部變量可以使用:

變量 說明
ARGV# ARGV0為第一個參數(shù),ARGV1為第二個參數(shù),依次類推
ARGV 定義宏(函數(shù))時參數(shù)為2個,實際傳了4個,則ARGV代表實際傳入的兩個
ARGN 定義宏(函數(shù))時參數(shù)為2個,實際傳了4個,則ARGN代表剩下的兩個
ARGC 實際傳入的參數(shù)的個數(shù)

調(diào)用示例:

# 定義函數(shù)
Function(myfunction ag1 ag2)
message(STATUS "function ag is " ${ag1})
message(STATUS "function ag is " ${ag2})
endfunction(myfunction)


# 定義宏
macro(mymacro ag1 ag2)
message(STATUS "macro ag is " ${ag1})
message(STATUS "macro ag is " ${ag2})
endmacro(mymacro)

# 調(diào)用函數(shù)
myfunction(1 2 3)
message(STATUS "\\n")

# 調(diào)用宏
mymacro(1 2 3)

要注意的是 宏的ARGN、ARGV等內(nèi)部變量不能直接在if、foreach(…IN LISTS…)等邏輯語句中使用。

二、模塊

1. 模塊說明

CMakeLists.txt和**.cmake結(jié)尾的文件可以用來作為CMake的模塊文件,用來封裝一些函數(shù)功能,再使用include(**.cmake)方式引用。

cmake系統(tǒng)本身內(nèi)置了一些預(yù)定義的模塊,如FindCURL模塊。

預(yù)定義模塊可以通過FIND_PACKAGE指令來引用。

2. 模塊定義示例

根目錄的主Cmake文件定義

# CMake 最低版本號要求
cmake_minimum_required (VERSION 2.8)

# 項目工程名
project (example)
message(STATUS "root This is BINARY dir " ${PROJECT_BINARY_DIR})
message(STATUS "root This is SOURCE dir " ${PROJECT_SOURCE_DIR})

# 添加子目錄
ADD_SUBDIRECTORY(subDirectory)

子模塊定義

創(chuàng)建

subDirectory/CMakeLists.txt,內(nèi)容如下:

# 打印信息
message(STATUS "src This is BINARY dir " ${PROJECT_BINARY_DIR})
message(STATUS "src This is SOURCE dir " ${PROJECT_SOURCE_DIR})

set(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin)

# CMAKE_SOURCE_DIR 是cmake內(nèi)置變量,工程根目錄的CMakeLists.txt文件路徑
SET(ROOT_DIR ${CMAKE_SOURCE_DIR})

# 構(gòu)建可執(zhí)行程序
ADD_EXECUTABLE(example main.cpp)

# 查找指定的庫,CURL是
FIND_PACKAGE(CURL)
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • WINDOWS
    +關(guān)注

    關(guān)注

    4

    文章

    3583

    瀏覽量

    89421
  • 指令
    +關(guān)注

    關(guān)注

    1

    文章

    612

    瀏覽量

    35843
  • C++
    C++
    +關(guān)注

    關(guān)注

    22

    文章

    2114

    瀏覽量

    73911
  • 編譯器
    +關(guān)注

    關(guān)注

    1

    文章

    1642

    瀏覽量

    49318
  • CMake
    +關(guān)注

    關(guān)注

    0

    文章

    28

    瀏覽量

    1309
收藏 人收藏

    評論

    相關(guān)推薦

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

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

    Windows下編譯工具CMake的安裝和最簡使用

    MCU的開發(fā)環(huán)境一般在Windows操作系統(tǒng)上,簡單的工程一般直接編寫Makefile文件后使用make工具構(gòu)建程序,復雜的工程一般借助CMake來生成Makefile文件后使用make工程構(gòu)建程序
    的頭像 發(fā)表于 11-14 10:18 ?8859次閱讀
    Windows下編譯工具<b class='flag-5'>CMake</b>的安裝和最簡使用

    14. 在 CMake 中自定義宏___CMake 保姆級教程【C_C++】

    CMake
    jf_97106930
    發(fā)布于 :2023年05月19日 12:49:38

    交叉平臺開源編譯系統(tǒng)_cmake入門

    交叉平臺開源編譯系統(tǒng)_cmake入門
    發(fā)表于 01-22 13:59 ?9次下載

    Cmake學習的總結(jié)(二)

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

    cmake管理配置ROOT項目的方法

    ROOT作為使用C++開發(fā)的工具庫,自然少不了cmake這個項目組織工具。本文簡單介紹下cmake管理配置ROOT項目的方法,先上總圖 ? ? ? 本項目有一個頭文件,兩個源文件以及一個cmake
    的頭像 發(fā)表于 01-18 17:45 ?4708次閱讀
    <b class='flag-5'>cmake</b>管理配置ROOT項目的方法

    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)有用戶,請試用 CMake 3 . 9 并利用改進的 CUDA 支持。如果您不是 CMa
    的頭像 發(fā)表于 04-01 17:42 ?4659次閱讀
    如何使用<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 ?3097次閱讀

    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 ?3458次閱讀

    CMake用法詳解

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

    CMake的實戰(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 ?752次閱讀
    <b class='flag-5'>CMake</b>的實戰(zhàn)教程-1

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

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

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

    一、 CMake構(gòu)建后的項目結(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 ?2254次閱讀
    <b class='flag-5'>CMake</b>構(gòu)建后的項目結(jié)構(gòu)解析

    請問一下CMake和Make之間的區(qū)別有哪些?

    CMake和Make是構(gòu)建軟件,其工作涉及將源代碼轉(zhuǎn)換為可執(zhí)行程序。CMake和Make是旨在實現(xiàn)構(gòu)建過程自動化的工具,幫助開發(fā)者節(jié)省時間和精力。
    的頭像 發(fā)表于 02-27 11:44 ?1901次閱讀