SORU
1 HAZİRAN 2012, Cuma


Nasıl C etkinleştirmek CMake 11 için?

CMake oluşturulan makefile benim program derlemek için çalıştırmaya çalıştığımda, range based for loops are not supported in c 98 mode Bu hatayı alıyorum. Benim için add_definitions(-std=c 0x) CMakeLists.txt ama yardım etmedi eklemeye çalıştım. Bunu da denedim:

if(CMAKE_COMPILER_IS_GNUCXX)
    add_definitions(-std=gnu  0x)
endif()

g --version, ben ne zaman alıyorum:

(Ubuntu/4.6.1-9ubuntu3 Linaro) g 4.6.1

C 11 özellikleri etkinleştirebilirim nasıl CMake kullanarak anlamıyorum. Yardım lütfen!

_ _ _ _ . DÜZENLE

Aynı zamanda da işe yaramazsa bir ** 6, denedim söylemeyi unutmuşum.

CEVAP
23 Kasım 2013, CUMARTESİ


CMake komutu target_compile_features() gerekli C özelliğini belirtmek için kullanılırcxx_range_for. CMake sonra C standardı kullanılacak neden olacaktır.

cmake_minimum_required(VERSION 3.1.0 FATAL_ERROR)
project(foobar CXX)
add_executable(foobar main.cc)
target_compile_features(foobar PRIVATE cxx_range_for)

Kullanmaya gerek yokadd_definitions(-std=c 11)ya da CMake değişkeni değiştirmek içinCMAKE_CXX_FLAGSçünkü CMake C derleyici uygun komut satırı bayrakları ile çağrılır. emin olun

Belki C programı cxx_range_for dışında C özellikleri kullanır. CMAKE_CXX_KNOWN_FEATURES C listeleri CMake genel özelliği seçebilirsiniz vardır.

target_compile_features() yerine de C standardı açıkça CMake özelliklerini ayarlayarak belirleyebilirsiniz CXX_STANDARD ve CMake hedef için CXX_STANDARD_REQUIRED.

Ayrıca my more detailed answer bkz.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Just So

    Just So

    3 HAZİRAN 2007
  • Tips On Linux

    Tips On Linu

    26 Temmuz 2008
  • TROPFEST

    TROPFEST

    27 Mart 2007