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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

cmake / add_compile_options、CMAKE_CXX_FLAGS 和 add_definitions 区别

發(fā)布時(shí)間:2024/10/14 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 cmake / add_compile_options、CMAKE_CXX_FLAGS 和 add_definitions 区别 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

在 cmake 腳本中,設(shè)置編譯選項(xiàng)可以通過(guò) add_compile_options 命令,也可以通過(guò) set 命令修改CMAKE_CXX_FLAGSCMAKE_C_FLAGS

使用這兩種方式在有的情況下效果是一樣的,但請(qǐng)注意它們還是有區(qū)別的:

add_compile_options 命令添加的編譯選項(xiàng)是針對(duì)所有編譯器的(包括 c 和 c++ 編譯器);

set 命令設(shè)置 CMAKE_C_FLAGSCMAKE_CXX_FLAGS 變量則是分別只針對(duì) c 和 c++ 編譯器的。

例如下面的代碼

#判斷編譯器類(lèi)型,如果是 gcc 編譯器,則在編譯選項(xiàng)中加入 c++11 支持 if(CMAKE_COMPILER_IS_GNUCXX)add_compile_options(-std=c++11)message(STATUS "optional:-std=c++11") endif(CMAKE_COMPILER_IS_GNUCXX)

使用 add_compile_options 添加 -std=c++11 選項(xiàng),是想在編譯 c++ 代碼時(shí)加上 c++11 支持選項(xiàng)。但是因?yàn)?add_compile_options 是針對(duì)所有類(lèi)型編譯器的,所以在編譯 c 代碼時(shí),就會(huì)產(chǎn)生如下 warning

??? J:\workspace\facecl.gcc>make b64
??? [ 50%] Building C object libb64/CMakeFiles/b64.dir/libb64-1.2.1/src/cdecode.c.obj
??? cc1.exe: warning: command line option ‘-std=c++11’ is valid for C++/ObjC++ but not for C
??? [100%] Building C object libb64/CMakeFiles/b64.dir/libb64-1.2.1/src/cencode.c.obj
??? cc1.exe: warning: command line option ‘-std=c++11’ is valid for C++/ObjC++ but not for C
??? Linking C static library libb64.a
??? [100%] Built target b64

雖然并不影響編譯,但看著的確是不爽啊,要消除這個(gè) warning,就不能使用add_compile_options,而是只針對(duì) c++ 編譯器添加這個(gè) option。

所以如下修改代碼,則警告消除。

#判斷編譯器類(lèi)型,如果是 gcc 編譯器,則在編譯選項(xiàng)中加入 c++11 支持 if(CMAKE_COMPILER_IS_GNUCXX)set(CMAKE_CXX_FLAGS "-std=c++11 ${CMAKE_CXX_FLAGS}")message(STATUS "optional:-std=c++11") endif(CMAKE_COMPILER_IS_GNUCXX)

舉一反三,我們就可以想到,add_definitions 這個(gè)命令也是同樣針對(duì)所有編譯器,一樣注意這個(gè)區(qū)別。

轉(zhuǎn)載:cmake:設(shè)置編譯選項(xiàng)的講究(add_compile_options和CMAKE_CXX_FLAGS的區(qū)別)_10km的專(zhuān)欄-CSDN博客_cmake_cxx_flags

(SAW:Game Over!)

總結(jié)

以上是生活随笔為你收集整理的cmake / add_compile_options、CMAKE_CXX_FLAGS 和 add_definitions 区别的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

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