簡體   English   中英

使用clang ++時默認啟用libc ++ / libcxx

[英]Enable libc++/libcxx by default when using clang++

我按照這里的說明從頭開始安裝了clang 之后,我根據這里的說明使用libsupc++安裝了libc++

現在,每當我使用clanglibc++編譯和鏈接程序時,我都需要發出如下命令:

clang++ -stdlib=libc++ -Wl,-rpath,/path/to/libcxx/lib <...>

有沒有辦法以默認使用libc++的方式配置/編譯clang,而不必每次都在命令行上指定庫和/或路徑? 將它放入LD_LIBRARY_PATH也不是首選選項,也不是使用自定義包裝器腳本。

Clang的CMake構建系統學習了CLANG_DEFAULT_CXX_STDLIB來設置默認的C ++標准庫。

但是,我不知道這個解決方案對你來說是多么切實可行,因為你必須使用樹頂的構建,直到下一個clang / llvm發布。

我有三種方法可以做到這一點。 第一個是使用Unix makefile的單個項目,第二個項目將根據需要提供多個項目,但需要編輯任意數量的文件以服務於任意數量的用戶,第三個項目將適用於任意數量的項目或用戶。 您可能希望跳到第三個選項,但其余的則適用於需要相似的其他人。

  1. 一個好方法是使用makefile。 這將使您只需鍵入make即可構建項目。 如果您使用* nix,則不需要安裝,大多數系統都附帶它。 這是一個示例makefile,用於執行您要求的內容(只需將<progname>替換為您的程序名稱,將<filename>替換為源文件名)。 只需將其粘貼到與源文件相同的目錄中名為“makefile”的文件中即可。

     FLAGS=-stdlib=libc++ -Wl,-rpath,/path/to/libcxx/lib all: <progname> progname: clang++ $FLAGS progname 

    免責聲明:我不使用clang ++,因此這可能是一個不完整的調用。 例如,在gcc中,您還需要指定-o outfile_name

  2. 或者(因為我剛剛閱讀了注釋),您可以運行以下命令(假設您使用bash):

     echo 'alias stdclang="clang++ -stdlib=libc++ -Wl,-rpath,/path/to/libcxx/lib"' >> ~/.bashrc 

    從那時起,只需輸入stdclang <progname>就可以構建libc ++庫

  3. 我能想到的最后一件事情與上一件事類似,但更具永久性。 以root touch /usr/bin/stdclang && chmod a+x /usr/bin/stdclang運行以下命令: touch /usr/bin/stdclang && chmod a+x /usr/bin/stdclang然后使用您想要的任何編輯器編輯文件/usr/bin/stdclang並添加以下行:

     #!/bin/bash clang++ -stdlib=libc++ -Wl,-rpath,/path/to/libcxx/lib $@ 

    然后你可以運行stdclang <other_args>讓它自動擴展為clang++ -stdlib=libc++ -Wl,-rpath,/path/to/libcxx/lib <other_args>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM