• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            Error

            C++博客 首頁(yè) 新隨筆 聯(lián)系 聚合 管理
              217 Posts :: 61 Stories :: 32 Comments :: 0 Trackbacks

            使用CMake GCC和Clang的/ LLVM之間切換

            cmake llvm clang
            我公司擁有一批項(xiàng)目的CMake的,我希望能夠方便地切換GCC或鐺/ LLVM他們。我相信(請(qǐng)如果我錯(cuò)了!)表示鏘我需要進(jìn)行如下設(shè)置:
             SET (CMAKE_C_COMPILER    "/usr/bin/clang")  SET (CMAKE_C_FLAGS    "-Wall -std=c99")  SET (CMAKE_C_FLAGS_DEBUG   "-g")  SET (CMAKE_C_FLAGS_MINSIZEREL  "-Os -DNDEBUG")  SET (CMAKE_C_FLAGS_RELEASE  "-O4 -DNDEBUG")  SET (CMAKE_C_FLAGS_RELWITHDEBINFO "-O2 -g")  SET (CMAKE_CXX_COMPILER    "/usr/bin/clang++")  SET (CMAKE_CXX_FLAGS    "-Wall")  SET (CMAKE_CXX_FLAGS_DEBUG   "-g")  SET (CMAKE_CXX_FLAGS_MINSIZEREL  "-Os -DNDEBUG")  SET (CMAKE_CXX_FLAGS_RELEASE  "-O4 -DNDEBUG")  SET (CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O2 -g")  SET (CMAKE_AR  "/usr/bin/llvm-ar")  SET (CMAKE_LINKER "/usr/bin/llvm-ld")  SET (CMAKE_NM  "/usr/bin/llvm-nm")  SET (CMAKE_OBJDUMP "/usr/bin/llvm-objdump")  SET (CMAKE_RANLIB "/usr/bin/llvm-ranlib") 
            是否有這些和默認(rèn)的GCC變量之間的切換,最好是全系統(tǒng)的變化,而不是具體的項(xiàng)目(即不只是將它們添加到項(xiàng)目的的CMakeLists.txt)一個(gè)簡(jiǎn)單的方法? 另外,是否有必要的llvm-*節(jié)目鐺的gcc時(shí)代替,而不是系統(tǒng)默認(rèn)值?有什么區(qū)別?
            本文地址 :CodeGo.net/340772/ 
            ------------------------------------------------------------------------------------------------------------------------- 
            1. CMake的榮譽(yù)的變量CCCXX在檢測(cè)到C和C ++編譯器
            $ export CC=/usr/bin/clang $ export CXX=/usr/bin/clang++ $ cmake .. -- The C compiler identification is Clang -- The CXX compiler identification is Clang 
            具體標(biāo)志可以通過(guò)將它們放入一個(gè)系統(tǒng)范圍的CMake文件并指向CMAKE_USER_MAKE_RULES_OVERRIDE變量,它被覆蓋。創(chuàng)建一個(gè)文件~/ClangOverrides.txt其內(nèi)容如下:
            SET (CMAKE_C_FLAGS_INIT    "-Wall -std=c99") SET (CMAKE_C_FLAGS_DEBUG_INIT   "-g") SET (CMAKE_C_FLAGS_MINSIZEREL_INIT  "-Os -DNDEBUG") SET (CMAKE_C_FLAGS_RELEASE_INIT  "-O4 -DNDEBUG") SET (CMAKE_C_FLAGS_RELWITHDEBINFO_INIT "-O2 -g") SET (CMAKE_CXX_FLAGS_INIT    "-Wall") SET (CMAKE_CXX_FLAGS_DEBUG_INIT   "-g") SET (CMAKE_CXX_FLAGS_MINSIZEREL_INIT  "-Os -DNDEBUG") SET (CMAKE_CXX_FLAGS_RELEASE_INIT  "-O4 -DNDEBUG") SET (CMAKE_CXX_FLAGS_RELWITHDEBINFO_INIT "-O2 -g") 
            后綴_init會(huì)讓CMake的初始化相應(yīng)的*_FLAGS變量與給定的值。然后調(diào)用cmake的以下面的方式:
            $ cmake -DCMAKE_USER_MAKE_RULES_OVERRIDE=~/ClangOverrides.txt .. 
            終于到了LLVM的binutils力,設(shè)置內(nèi)部變量_CMAKE_TOOLCHAIN_PREFIX。這個(gè)變量是由榮幸CMakeFindBinUtils模塊:
            $ cmake -D_CMAKE_TOOLCHAIN_PREFIX=llvm- .. 
            把這個(gè)放在一起你可以寫一個(gè)shell包裝它設(shè)置了變量CCCXX然后調(diào)用cmake的可變覆蓋。 
            2. 全系統(tǒng)的C ++的變化對(duì)Ubuntu的: sudo用update-alternatives-配置C ++ 將打印是這樣的:
             Selection Path    Priority Status ------------------------------------------------------------ * 0   /usr/bin/g++  20  auto mode  1   /usr/bin/clang++ 10  manual mode  2   /usr/bin/g++  20  manual mode 
            然后,只需選擇鐺++。 
            3. 你的
            option(USE_CLANG "build application with clang" OFF) # OFF is the default 
            然后在包裹如果()S中的設(shè)置:
            if(USE_CLANG)  SET (...)  .... endif(USE_CLANG) 
            這樣,它會(huì)顯示為在GUI配置工具的cmake的選項(xiàng)。 為了讓您在整個(gè)系統(tǒng)可以在變量的默認(rèn)值或保持與答案。 
            4. 你絕對(duì)不需要不同的LLVM-AR等程序:
            SET (CMAKE_AR  "/usr/bin/llvm-ar") SET (CMAKE_LINKER "/usr/bin/llvm-ld") SET (CMAKE_NM  "/usr/bin/llvm-nm") SET (CMAKE_OBJDUMP "/usr/bin/llvm-objdump") SET (CMAKE_RANLIB "/usr/bin/llvm-ranlib") 
            這些都是為了工作,對(duì)LLVM內(nèi)部格式,因此阿仁'到您的應(yīng)用程序的生成。 作為一個(gè)說(shuō)明 CodeGo.net,O4將在你的程序調(diào)用的LTO,你可能不希望(這樣會(huì)大大)和鐺默認(rèn)為C99模式,使標(biāo)志不是必需的兩種。 
            5. 你的語(yǔ)法:$ENV{environment-variable}在你的CMakeLists.txt訪問(wèn)變量。你可以適當(dāng)?shù)貏?chuàng)建一個(gè)初始化的變量集的腳本,只是在引用這些變量的CMakeLists.txt文件。
            posted on 2015-08-20 11:52 Enic 閱讀(1419) 評(píng)論(0)  編輯 收藏 引用 所屬分類: linux
            色综合久久精品中文字幕首页| 91秦先生久久久久久久| 亚洲综合精品香蕉久久网| 久久精品天天中文字幕人妻| 一本伊大人香蕉久久网手机| 伊人久久成人成综合网222| 久久天天躁狠狠躁夜夜96流白浆| 狠狠色婷婷综合天天久久丁香| 思思久久99热只有频精品66| 国产精品美女久久久m| 久久亚洲国产精品123区| 久久精品欧美日韩精品| 久久综合久久鬼色| 久久777国产线看观看精品| 要久久爱在线免费观看| 国产精品免费看久久久| 少妇久久久久久被弄高潮| 麻豆久久| 91久久精品电影| 久久A级毛片免费观看| 久久午夜夜伦鲁鲁片免费无码影视| 国产91色综合久久免费| 亚洲国产精品无码久久一区二区| 色播久久人人爽人人爽人人片aV| 成人午夜精品久久久久久久小说| 性欧美丰满熟妇XXXX性久久久 | 国产一级持黄大片99久久| 无码八A片人妻少妇久久| 久久精品视屏| 久久天天躁狠狠躁夜夜2020老熟妇 | 人人狠狠综合88综合久久| 久久er国产精品免费观看2| 久久综合给合久久狠狠狠97色 | 久久精品国产一区二区三区不卡| 久久91综合国产91久久精品| 亚洲精品无码久久久影院相关影片| 久久久久久久久久久精品尤物| 亚洲精品无码久久久| 亚洲性久久久影院| 97久久国产综合精品女不卡| 亚洲中文字幕无码久久2020|