日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

Linux下CMake简明教程(九) 添加控制选项

發布時間:2025/4/5 linux 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Linux下CMake简明教程(九) 添加控制选项 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

代碼在git

有時希望在編譯代碼時只編譯一些指定的源碼,可以使用cmake的option命令,主要遇到的情況分為2種:
  • 本來要生成多個bin或庫文件,現在只想生成部分指定的bin或庫文件
  • 對于同一個bin文件,只想編譯其中部分代碼(使用宏來控制)

第1種情況

  • 假設我們現在的工程會生成2個bin文件,main1和main2,現在整體結構體如下,
. ├── bin ├── build ├── CMakeLists.txt └── src├── CMakeLists.txt├── main1.c└── main2.c

外層的CMakeLists.txt內容如下

cmake_minimum_required(VERSION 3.5) project(demo) option(MYDEBUG "enable debug compilation" OFF) set (EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin) add_subdirectory(src)

這里使用了option命令,其第一個參數是這個option的名字,第二個參數是字符串,用來描述這個option是來干嘛的,第三個是option的值,ON或OFF,也可以不寫,不寫就是默認OFF。

然后編寫src目錄下的CMakeLists.txt,如下

cmake_minimum_required (VERSION 3.5)add_executable(main1 main1.c)if (MYDEBUG)add_executable(main2 main2.c) else()message(STATUS "Currently is not in debug mode") endif()

注意,這里使用了if-else來根據option來決定是否編譯main2.c
其中main1.c和main2.c的內容如下,

然后cd到build目錄下輸入cmake … && make就可以只編譯出main1,如果想編譯出main2,就把MYDEBUG設置為ON,再次輸入cmake … && make重新編譯。

每次想改變MYDEBUG時都需要去修改CMakeLists.txt,有點麻煩,其實可以通過cmake的命令行去操作,例如我們想把MYDEBUG設置為OFF,先cd到build目錄,然后輸入cmake … -DMYDEBUG=ON,這樣就可以編譯出main1和main2 (在bin目錄下)

總結

以上是生活随笔為你收集整理的Linux下CMake简明教程(九) 添加控制选项的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。