SORU
11 AĞUSTOS 2011, PERŞEMBE


GCC arasında geçiş ve Çınlama/LLVM CMake kullanarak

Projeler CMake kullanarak inşa edilen bir dizi var ve kolayca GCC veya clang yapar/LLVM bunları derlemek kullanarak arasında geçiş yapabilmek istiyorum. İnanıyorum (eğer yanlışım varsa düzeltin lütfen!) aşağıdaki ata Çınlama kullanmak için:

    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")

Bu ve varsayılan GCC değişkenleri, belirli bir proje yerine, sistem genelinde bir değişiklik (yani sadece bir proje içine ekleme cmakelists.txt) tercihen arasında geçiş kolay bir yolu var mı?

Ayrıca, gcc yerine çınlama derleme sistemi varsayılanları yerine llvm-* programlar kullanmak gerekli mi? Ne fark eder?

CEVAP
11 AĞUSTOS 2011, PERŞEMBE


Onur CMake çevre C ve C derleyici kullanmak için algılama üzerine CC CXX değişkenler:

$ export CC=/usr/bin/clang
$ export CXX=/usr/bin/clang  
$ cmake ..
-- The C compiler identification is Clang
-- The CXX compiler identification is Clang

Derleyici belirli bayrakları sistemi geniş CMake bir dosya içine koyarak ve CMAKE_USER_MAKE_RULES_OVERRIDE değişken işaret ederek kılınabilir. Aşağıdaki içeriği ile 10* *dosyası oluşturun:

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")

Soneki _İNİT CMake verilen değer ile *_FLAGS ilgili değişkenin ilk değeri yapacaktır. Çağır şu şekilde cmake sonra:

$ cmake -DCMAKE_USER_MAKE_RULES_OVERRIDE=~/ClangOverrides.txt ..

Son olarak LLVM, binutils kullanımını zorlamak için, iç değişken _CMAKE_TOOLCHAIN_PREFIX ayarlayın. Bu değişken CMakeFindBinUtils modülü tarafından onurlandırıldı

$ cmake -D_CMAKE_TOOLCHAIN_PREFIX=llvm- ..

Bu tüm koyarak birlikte çevre değişkenleri CC CXX ayarlar kabuk sarıcı yazabilirsiniz ve sonra belirtilen değişken geçersiz kılar ile cmake çağırır.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • GirlSanctuaryBlog

    GirlSanctuar

    28 Aralık 2011
  • Megan Parken

    Megan Parken

    19 Temmuz 2009
  • oHeymarvin

    oHeymarvin

    11 Temmuz 2013