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")
鏄惁鏈夎繖浜涘拰榛樿鐨凣CC鍙橀噺涔嬮棿鐨勫垏鎹紝鏈濂芥槸鍏ㄧ郴緇熺殑鍙樺寲錛岃屼笉鏄叿浣撶殑欏圭洰錛堝嵆涓嶅彧鏄皢瀹冧滑娣誨姞鍒伴」鐩殑鐨凜MakeLists.txt錛変竴涓畝鍗曠殑鏂規硶錛?鍙﹀錛屾槸鍚︽湁蹇呰鐨?/span>llvm-*
鑺傜洰閾涚殑gcc鏃朵唬鏇匡紝鑰屼笉鏄郴緇熼粯璁ゅ鹼紵鏈変粈涔堝尯鍒紵CC
鍜?/span>CXX
鍦ㄦ嫻嬪埌C鍜孋 ++緙栬瘧鍣?/span>$ export CC=/usr/bin/clang $ export CXX=/usr/bin/clang++ $ cmake .. -- The C compiler identification is Clang -- The CXX compiler identification is Clang
鍏蜂綋鏍囧織鍙互閫氳繃灝嗗畠浠斁鍏ヤ竴涓郴緇熻寖鍥寸殑CMake鏂囦歡騫舵寚鍚慍MAKE_USER_MAKE_RULES_OVERRIDE鍙橀噺錛屽畠琚鐩栥傚垱寤轟竴涓枃浠?/span>~/ClangOverrides.txt
鍏跺唴瀹瑰涓嬶細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浼氳CMake鐨勫垵濮嬪寲鐩稿簲鐨?/span>*_FLAGS
鍙橀噺涓庣粰瀹氱殑鍊箋傜劧鍚庤皟鐢╟make鐨勪互涓嬮潰鐨勬柟寮忥細$ cmake -DCMAKE_USER_MAKE_RULES_OVERRIDE=~/ClangOverrides.txt ..
緇堜簬鍒頒簡LLVM鐨刡inutils鍔涳紝璁劇疆鍐呴儴鍙橀噺_CMAKE_TOOLCHAIN_PREFIX
銆傝繖涓彉閲忔槸鐢辮崳騫?/span>CMakeFindBinUtils
妯″潡錛?/span>$ cmake -D_CMAKE_TOOLCHAIN_PREFIX=llvm- ..
鎶婅繖涓斁鍦ㄤ竴璧蜂綘鍙互鍐欎竴涓猻hell鍖呰瀹冭緗簡鍙橀噺CC
鍜?/span>CXX
鐒跺悗璋冪敤cmake鐨勫彲鍙樿鐩栥?nbsp; 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
鐒跺悗錛屽彧闇閫夋嫨閾?+銆?nbsp;option(USE_CLANG "build application with clang" OFF) # OFF is the default
鐒跺悗鍦ㄥ寘瑁瑰鏋滐紙錛塖涓殑璁劇疆錛?/span>if(USE_CLANG) SET (...) .... endif(USE_CLANG)
榪欐牱錛屽畠浼氭樉紺轟負鍦℅UI閰嶇疆宸ュ叿鐨刢make鐨勯夐」銆?涓轟簡璁╂偍鍦ㄦ暣涓郴緇熷彲浠ュ湪鍙橀噺鐨勯粯璁ゅ兼垨淇濇寔涓庣瓟妗堛?nbsp;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")
榪欎簺閮芥槸涓轟簡宸ヤ綔錛屽LLVM鍐呴儴鏍煎紡錛屽洜姝ら樋浠?鍒版偍鐨勫簲鐢ㄧ▼搴忕殑鐢熸垚銆?浣滀負涓涓鏄?CodeGo.net錛孫4灝嗗湪浣犵殑紼嬪簭璋冪敤鐨凩TO錛屼綘鍙兘涓嶅笇鏈涳紙榪欐牱浼氬ぇ澶э級鍜岄摏榛樿涓篊99妯″紡錛屼嬌鏍囧織涓嶆槸蹇呴渶鐨勪袱縐嶃?nbsp;$ENV{environment-variable}
鍦ㄤ綘鐨?/span>CMakeLists.txt
璁塊棶鍙橀噺銆備綘鍙互閫傚綋鍦板垱寤轟竴涓垵濮嬪寲鐨勫彉閲忛泦鐨勮剼鏈紝鍙槸鍦ㄥ紩鐢ㄨ繖浜涘彉閲忕殑CMakeLists.txt
鏂囦歡銆?/span>鏍囩錛?/span> |
linux涓姩鎬侀摼鎺ュ簱鐨勬悳绱㈤『搴?nbsp;
//
// by kirk,2008.11.21,鏂囦腑鏈塨ug璇鋒悶绱т笌鎴戣仈緋?-)
//
銆銆銆鎬庝箞璁劇疆榪欎釜閫夐」錛?/p> 銆銆銆闇瑕佸湪緙栬瘧榪炴帴紼嬪簭鐨勬椂鍊欎嬌鐢?Wl,-rpath閫夐」錛屽亣璁句竴涓▼搴弔est闇瑕佷嬌鐢╨iblib.so搴擄紝濡備笅鎵紺鴻繘琛岀紪璇戣繛鎺ワ細 g++ -o test -L. -llib -Wl,rpath=./ test.cpp 銆銆銆鎬庝箞璁劇疆榪欎釜閫夐」錛熷綋鐒舵槸璁劇疆linux涓嬬殑鐜鍙橀噺灝卞彲浠ヤ簡銆?/p> export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:./ 銆銆銆鎬庝箞璁劇疆榪欎釜閫夐」錛熷彲浠ョ洿鎺ョ紪杈憀d.so.conf鍔犲叆闇瑕佹煡鎵劇殑璺緞錛屼篃鍙互鍦?etc/ld.so.conf.d鐩綍涓嬬殑宸辨湁鏂囦歡涓姞鍏ヨ礬寰勶紝鎴栬呭湪璇ョ洰褰曚笅鏂板緩涓涓枃浠訛紙鍚嶅瓧涓?.conf鍗沖彲錛夛紝鍐嶆妸闇瑕佺殑璺緞鍔犲叆鍒拌鏂囦歡涓傛渶鍚庢墽琛宭dconfig鍗沖彲鐢熸晥銆?/p> 鐜鍙橀噺LD_LIBRARY_PATH鐢ㄦ潵鎸囧畾鏌ユ壘鍏變韓搴撴椂闄や簡榛樿璺緞涔嬪鐨勫叾浠栬礬寰勩?璇ヨ礬寰勫湪榛樿璺緞涔嬪墠鏌ユ壘)
縐繪紼嬪簭鏃剁殑緇忓父紕板埌闇瑕佷嬌鐢ㄤ竴浜涚壒瀹氱殑鍔ㄦ佸簱錛岃岃繖浜涚紪璇戝ソ鐨勫姩鎬佸簱鏀懼湪鎴戜滑鑷繁寤虹珛鐨勭洰褰曢噷錛岃繖鏃舵垜浠彲浠ヨ緗?font color="#C60A00" style="word-wrap: normal; word-break: normal;">LD_LIBRARY_PATH銆?br />渚嬶細export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/work/lib/
榪欐牱灝卞彲浠ヤ嬌鐢?work/lib/涓嬬殑搴撴枃浠朵簡,榪愯紼嬪簭鍚庣郴緇熶細鑷姩鍒扮幆澧冨彉閲?font color="#C60A00" style="word-wrap: normal; word-break: normal;">LD_LIBRARY_PATH鎸囧畾鐨勮礬寰勪腑鏌ユ壘鍏舵墍闇鐨勫簱銆?br />緋葷粺鏌ユ壘鍔ㄦ佸簱鐨勯『搴?br />緋葷粺鍏堟壘LD_LIBRARY_PATH涓嬬殑搴撳啀鎵?lib and /usr/lib絳夎礬寰勪笅鐨勫簱,榪樻湁/etc/ld.so.conf閲屾寚瀹氱殑璺緞(濡傛灉ld.so.conf瀛樺湪),man ldconfig for more information
[url=http://infomax/bbs/misc.php?action=viewratings&tid=111&pid=228][/url]
浣縇inux鍚姩涔嬪悗灝卞姞杞?font color="#C60A00" style="word-wrap: normal; word-break: normal;">LD_LIBRARY_PATH鐨勮礬寰?/strong>
/etc/rc.d/rc.local鏂囦歡涓姞鍏xport
濡傛灉鍦ㄩ摼鎺ユ椂浣跨敤浜?-R"鍜?-L"閫夐」錛屽垯鐩稿叧鍔ㄦ佸簱鐨勮礬寰勫皢淇濆瓨鍦‥LF鏂囦歡涓紝浜?br />鏄互鍚庣殑榪愯涓笉鍐嶉渶瑕佽緗幆澧冨彉閲忓幓瀹氫綅鍔ㄦ佸簱銆傛瘮濡傦紝鏈変竴涓?br />/usr/local/lib/libfoo.so錛岃屼綘鐨刡ar紼嬪簭闇瑕佽繖涓猯ibfoo.so錛岀紪璇戙侀摼鎺ユ椂鏈濂?br />榪欐牱 錛歡cc -Wall -pipe -O3 -o bar -R/usr/local/lib -L/usr/local/lib bar.c -lfoo
錛?man gcc 錛屾病鍙戠幇-R鎴?rpath閫夐」錛屽緟鏌ワ級