日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

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

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

代碼在git

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

第1種情況

  • 假設(shè)我們現(xiàn)在的工程會生成2個bin文件,main1和main2,現(xiàn)在整體結(jié)構(gòu)體如下,
. ├── bin ├── build ├── CMakeLists.txt └── src├── CMakeLists.txt├── main1.c└── main2.c

外層的CMakeLists.txt內(nèi)容如下

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命令,其第一個參數(shù)是這個option的名字,第二個參數(shù)是字符串,用來描述這個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來根據(jù)option來決定是否編譯main2.c
其中main1.c和main2.c的內(nèi)容如下,

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

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

總結(jié)

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

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。