ฉันจะเปิดใช้งาน C ++ 11 ใน CMake ได้อย่างไร


356

เมื่อฉันพยายามเรียกใช้ makefile ที่สร้างโดย CMake เพื่อรวบรวมโปรแกรมของฉันฉันได้รับข้อผิดพลาดนั้น

ไม่รองรับช่วงสำหรับลูปในโหมด C ++ 98

ฉันพยายามเพิ่มadd_definitions(-std=c++0x)ในของฉันCMakeLists.txtแต่มันก็ไม่ได้ช่วย

ฉันลองสิ่งนี้ด้วย:

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

เมื่อฉันทำg++ --versionฉันจะได้รับ:

g ++ (Ubuntu / Linaro 4.6.1-9ubuntu3) 4.6.1

ฉันได้ลองSET(CMAKE_CXX_FLAGS "-std=c++0x")แล้วซึ่งยังใช้งานไม่ได้

ฉันไม่เข้าใจวิธีการเปิดใช้งานคุณสมบัติ C ++ 11 โดยใช้ CMake


11
SET(CMAKE_CXX_FLAGS "-std=c++0x")ทำงานที่ดีสำหรับฉันดังนั้นอาจมีปัญหาที่อื่นในแฟ้ม CMakeLists ตรวจสอบให้แน่ใจว่าคุณไม่ได้เขียนทับเนื้อหาของ CMAKE_CXX_FLAGS โดยไม่ตั้งใจในภายหลัง
ComicSansMS

7
add_definitions (-std = c ++ 11) ใช้ได้กับฉันด้วย CMake 2.8.8
kyku

@ComsSansMS: คุณมีสิทธิ์โดยสิ้นเชิง! ฉันเขียนทับมันซึ่งเป็นความผิดพลาดของฉันเอง ฉันได้แก้ไขแล้วและตอนนี้ก็ใช้ได้ดี! สิ่ง C ++ 11 ยอดเยี่ยมมาก! ฉันต้องการวนซ้ำกับเวกเตอร์ของโครงสร้างซึ่งจะต้องใช้ตัววนซ้ำและเสียงการเข้ารหัสที่ไม่จำเป็นถ้าฉันไม่มีช่วงสำหรับลูป ฉันเดาว่าฉันสามารถใช้ BOOST_FOREACH ได้ แต่ทำได้ดี ...
Subhamoy S.

32
สำหรับ CMake ≥3.1 set(CMAKE_CXX_STANDARD 11)(ก่อนกำหนดเป้าหมาย) เป็นวิธีที่ดีที่สุด
emlai

@tuple_cat คุณสามารถทำตามเป้าหมายได้เช่นกัน แต่ระวังว่าCXX_STANDARDมันใช้ไม่ได้กับ MSVC ดังนั้นโดยทั่วไปคุณต้องถอยกลับไปtarget_compile_featuresถ้าคุณต้องการบางสิ่งที่ใช้งานข้ามแพลตฟอร์มได้
Ela782

คำตอบ:


395

CMake 3.1 แนะนำตัวแปรCMAKE_CXX_STANDARDที่คุณสามารถใช้ได้ หากคุณรู้ว่าคุณจะมี CMake 3.1 อยู่เสมอคุณสามารถเขียนมันลงในไฟล์ CMakeLists.txt ระดับบนสุดของคุณหรือวางไว้ก่อนที่จะมีการกำหนดเป้าหมายใหม่:

set (CMAKE_CXX_STANDARD 11)

หากคุณต้องการรองรับ CMake เวอร์ชันเก่านี่คือมาโครที่ฉันใช้เพื่อที่คุณสามารถใช้:

macro(use_cxx11)
  if (CMAKE_VERSION VERSION_LESS "3.1")
    if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
      set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu++11")
    endif ()
  else ()
    set (CMAKE_CXX_STANDARD 11)
  endif ()
endmacro(use_cxx11)

มาโครรองรับเฉพาะ GCC ในขณะนี้ แต่ควรตรงไปข้างหน้าเพื่อขยายไปยังคอมไพเลอร์อื่น ๆ

จากนั้นคุณสามารถเขียนuse_cxx11()ที่ด้านบนของไฟล์ CMakeLists.txt ใด ๆ ที่กำหนดเป้าหมายที่ใช้ C ++ 11

CMake ออก # 15943 สำหรับผู้ใช้ clang ที่กำหนดเป้าหมาย macOS

หากคุณใช้ CMake และเสียงดังกราวด์เพื่อกำหนดเป้าหมาย macOS มีข้อผิดพลาดที่อาจทำให้CMAKE_CXX_STANDARDคุณสมบัติไม่ทำงาน (ไม่เพิ่มแฟล็กคอมไพเลอร์ใด ๆ ) ตรวจสอบให้แน่ใจว่าคุณทำสิ่งใดสิ่งหนึ่งต่อไปนี้:

  • ใช้cmake_minimum_requiredเพื่อต้องการ CMake 3.0 หรือใหม่กว่าหรือ
  • ตั้งค่านโยบาย CMP0025 เป็น NEW ด้วยรหัสต่อไปนี้ที่ด้านบนของไฟล์ CMakeLists.txt ของคุณก่อนprojectคำสั่ง:

    # Fix behavior of CMAKE_CXX_STANDARD when targeting macOS.
    if (POLICY CMP0025)
      cmake_policy(SET CMP0025 NEW)
    endif ()

12
นี่ควรเป็นคำตอบที่ยอมรับได้ ไม่จำเป็นต้องมีการสัมผัสคุณสมบัติของแต่ละเป้าหมายและทำงานข้ามแพลตฟอร์ม
DevSolar

4
เห็นด้วยนี่ควรเป็นคำตอบที่ยอมรับได้ของ CMake 3.1+ ดูเหมือนว่าจะไม่ได้ผลสำหรับฉันบนเครื่องแมค คุณสามารถบังคับให้มันให้ --std = c ++ 11 ด้วย --stdlib = libc ++ ซึ่งเป็นค่าเริ่มต้นบน Mac CMAKE_CXX_STANDARD จะรวมส่วนขยาย gnu เสมอหากได้รับการสนับสนุนและดูเหมือนว่าผลลัพธ์จะไม่ได้รับการสร้าง --stdlib = libc ++ คุณต้องเปลี่ยนไปใช้ gnu's --stdlib = libstdc ++ Mac เป็นเคสพิเศษ สำหรับ Linux การเลือก gnu ++ 11 ด้วย libstdc ++ เป็นบรรทัดฐาน แน่นอนว่าแก้ไขได้อย่างง่ายดายด้วย if (APPLE) add_compile_options () เพื่อตรึงบนแฟล็ก
Atifm

2
ปัญหาหนึ่งของวิธีนี้gnu++11คือการบังคับใช้แม้ว่าจะกำหนดตัวแปรเหล่านี้set(CMAKE_ANDROID_NDK_TOOLCHAIN_VERSION clang) set(CMAKE_ANDROID_STL_TYPE c++_static)แล้วก็ตาม สำหรับฉันวิธีเดียวที่ทำงานได้คือคลาสสิกset (CMAKE_CXX_FLAGS "-std=c++11 ${CMAKE_CXX_FLAGS}")
อันโตนิโอ

2
ไม่ทำงานสำหรับฉันใน macOS (CMake 3.9.4, homebrew-clang) ช่วยผู้อื่นให้สิ้นหวัง ไม่แน่ใจว่าทำไมมันถึงใช้ได้กับ @EvanMoran แต่ไม่ใช่ฉัน
Unapiedra

2
@ Unapiedra: มันเป็นข้อผิดพลาดของ CMake แต่คุณสามารถหลีกเลี่ยงได้
David Grayson

186

คำสั่ง CMake target_compile_features()ใช้เพื่อระบุคุณสมบัติ C ++ ที่cxx_range_forต้องการ CMake จะชักนำมาตรฐาน C ++ ที่จะใช้

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)

ไม่จำเป็นต้องใช้add_definitions(-std=c++11)หรือแก้ไขตัวแปร CMake CMAKE_CXX_FLAGSเนื่องจาก CMake จะตรวจสอบให้แน่ใจว่าคอมไพเลอร์ C ++ ถูกเรียกใช้พร้อมกับแฟล็กบรรทัดคำสั่งที่เหมาะสม

บางทีคุณ C ++ โปรแกรมใช้ C ++ อื่น ๆ cxx_range_forให้บริการกว่า คุณสมบัติส่วนกลาง CMake CMAKE_CXX_KNOWN_FEATURESจะแสดงรายการคุณสมบัติC ++ ที่คุณสามารถเลือกได้

แทนที่จะใช้target_compile_features()คุณยังสามารถระบุมาตรฐาน C ++ ได้อย่างชัดเจนโดยการตั้งค่าคุณสมบัติ CMake CXX_STANDARD และ CXX_STANDARD_REQUIREDสำหรับเป้าหมาย CMake ของคุณ

ดูคำตอบที่ละเอียดยิ่งขึ้นของฉันด้วย


4
ดูเหมือนว่าการแก้ไขตั้งแต่วันนี้จะทำให้เข้าใจผิด CMake 3.0.0 ไม่มี target_compile_features ช่วยแก้ให้ด้วยนะถ้าฉันผิด. ฉันคิดว่าคำสั่งนั้นมีอยู่ในงานสร้างของ CMake ทุกคืน
Erik Sjölund

4
ฉันจะบอกว่านี่เป็นคำตอบที่ถูกต้องที่สุด
Michał Walenciak

8
ฉันคิดว่านี่เป็นวิธีที่ควรทำ คำตอบอื่น ๆ เพียงเพิ่มแฟล็กด้วยตนเองเท่านั้น อย่างไรก็ตามดูเหมือนว่าจะมีเฉพาะใน CMake 3.1+
Uli Köhler

2
@ UliKöhlerยังไม่สามารถใช้งานได้จริงและอาจเปิดขึ้นสำหรับคอมไพเลอร์บางส่วนใน 3.2 อย่าใช้วิธีนี้ในระยะสั้น มันไม่ได้พกพาอย่างสมบูรณ์
ดั๊ก

2
มีความคิดใดบ้างที่จะทำสิ่งนี้ใน CMake 2.6
nuzzolilo

93

ฉันใช้

include(CheckCXXCompilerFlag)
CHECK_CXX_COMPILER_FLAG("-std=c++11" COMPILER_SUPPORTS_CXX11)
CHECK_CXX_COMPILER_FLAG("-std=c++0x" COMPILER_SUPPORTS_CXX0X)
if(COMPILER_SUPPORTS_CXX11)
    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
elseif(COMPILER_SUPPORTS_CXX0X)
    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x")
else()
        message(STATUS "The compiler ${CMAKE_CXX_COMPILER} has no C++11 support. Please use a different C++ compiler.")
endif()

แต่ถ้าคุณต้องการที่จะเล่นกับC++11, g++ 4.6.1เป็นเก่าสวย พยายามที่จะรับใหม่g++รุ่น


4
นี่คือคำตอบที่ถูกและดีสำหรับคำถามนี้สำหรับฉันด้วย cmake ปัจจุบัน (แผ่ออก) ใน Linux ล่าสุดโดยใช้ g ++
Patrick B.

1
คัดลอกและวางสิ่งนี้และทำงานได้อย่างสมบูรณ์ ฉันใช้ Cygwin ด้วย CMAKE 2.8.9 ฉันรู้เกี่ยวกับวิธีการส่วนใหญ่ที่ฉันอ่านที่นี่เพราะฉันทำตามรายชื่อผู้รับจดหมาย CMAKE และฉันได้ย้าย WebKit ไปยังคอมไพเลอร์หลากหลายรูปแบบ สิ่งที่เราทำเพื่อพอร์ต WebKit คือการติดตั้ง CMake 2.8.12 อย่างไรก็ตามเนื่องจากฉันรู้ว่า CMAKE ของ Cygwin นั้นเก่าฉันจึงต้องการสิ่งที่ใช้กับเวอร์ชันนั้น (ไม่ได้ย้าย WebKit ไปยัง Cygwin ขอโทษด้วย)
cardiff space man

เยี่ยมมากนี่เป็นแบบดรอปดาวน์สำหรับ CMake เก่าและ g ++ 4.6 (และการพิสูจน์ในอนาคต) ฉันยังยกระดับCXX_STANDARDคำตอบที่ใช้ แต่นี่เป็นคำตอบเดียวที่มีประโยชน์ในสถานการณ์ของฉัน
Tomasz Gandor

ตรงนี้เป็นสิ่งที่ฉันกำลังมองหา แต่ก็ไม่ชัดเจนว่าเป็นรุ่น cmake ขั้นต่ำที่จำเป็นในการใช้โมดูลที่ cmake - โมดูลช่วยเหลือไม่ได้ช่วยอะไรมากเกี่ยวกับเรื่องนี้
Jan Segre

1
@ JanSegre โมดูลปรากฏตัวครั้งแรกใน 2.4, cmake.org/…
KoKuToru

57

วิธีที่ง่ายที่สุดในการตั้งค่ามาตรฐาน Cxx คือ:

 set_property(TARGET tgt PROPERTY CXX_STANDARD 11)

ดูเอกสารประกอบของ CMakeสำหรับรายละเอียดเพิ่มเติม


2
ใช่นี่เป็นวิธีที่ดีที่สุดวิธีหนึ่งในการทำ CMake สมัยใหม่ (3.1+)
Erbureth พูดว่า Reinstate Monica

14
หรือคุณสามารถset(CMAKE_CXX_STANDARD 11)กำหนดคุณสมบัติเริ่มต้นสำหรับเป้าหมายทั้งหมดที่สร้างขึ้นหลังจากนั้น
emlai

1
นี่เป็นวิธีการแก้ปัญหาที่คุณต้องการหากคุณต้องการกำหนดมาตรฐาน C ++ ที่แตกต่างกันในเป้าหมายที่แตกต่างกันเนื่องจากsetคำสั่งที่ @emlai แนะนำคือทั่วโลกและมีผลต่อเป้าหมายที่ตามมาทั้งหมด
Elliott Slaughter

40

เมื่อเปิดSET(CMAKE_CXX_FLAGS "-std=c++0x")ใช้งานจะเปิดใช้งานคุณสมบัติ C ++ 11 จำนวนมาก เหตุผลที่มันไม่ทำงานคือคำสั่งเป็นดังนี้:

set(CMAKE_CXX_FLAGS "-std=c++0x ${CMAKE_CXX_FLAGS} -g -ftest-coverage -fprofile-arcs")

ต่อไปนี้เป็นวิธีการบางอย่าง-std=c++0xธงถูกเขียนทับและมันไม่ทำงาน การตั้งค่าสถานะหนึ่งโดยหนึ่งหรือใช้วิธีการรายการจะทำงาน

list( APPEND CMAKE_CXX_FLAGS "-std=c++0x ${CMAKE_CXX_FLAGS} -g -ftest-coverage -fprofile-arcs")

36
ฉันใช้เสมอ: SET (CMAKE_CXX_FLAGS "$ {CMAKE_CXX_FLAGS} -std = c ++ 11") # สำหรับ gcc> = 4.7 หรือ c ++ 0x สำหรับ 4.6
David Doria

ฉันเคยทำสคริปต์เล็กน้อยสำหรับเรื่องนั้น (ยังไม่เสร็จสมบูรณ์): github.com/Morwenn/POLDER/blob/master/cmake/set_cxx_norm.cmake
Morwenn

9
-1 หากคุณระบุ CMAKE_CXX_FLAGS ใด ๆ จากบรรทัดคำสั่งวิธีที่สองจะสร้างเครื่องหมายอัฒภาคในคำสั่ง build (และทำซ้ำ CMAKE_CXX_FLAGS เดิมสองครั้ง)
Nikolai

แทนที่จะเพิ่มแฟล็ก -g ด้วยตนเองคุณควรตั้งค่าตัวแปร CMAKE_BUILD_TYPE เป็นดีบั๊ก: voices.canonical.com/jussi.pakkanen/2013/03/26/ …
bames53

1
CXX_STANDARDคุณสมบัติจะดีกว่ามันเป็นคอมไพเลอร์ไม่เชื่อเรื่องพระเจ้า
jaskmar

23

วิธีที่ง่ายที่สุด:

add_compile_options(-std=c++11)


5
ใช้ได้เฉพาะจาก cmake 3.0
Raúl Salinas-Monteagudo

4
สิ่งนี้ทำให้เกิดคำเตือนและข้อผิดพลาดเมื่อรวบรวมไฟล์ C ในโครงการเดียวกัน
rosewater

19

สำหรับ CMake 3.8 และใหม่กว่าคุณสามารถใช้ได้

target_compile_features(target PUBLIC cxx_std_11)

1
นี่เป็นวิธีที่แนะนำให้ใช้กับเวอร์ชันล่าสุดของ CMake
camino

หน้าที่ของPUBLICที่นี่คืออะไร?
Rotsiser Mho

2
@RotsiserMho PUBLICหมายความว่าเป้าหมายอื่น ๆ ที่ขึ้นอยู่กับเป้าหมายของคุณจะใช้ C ++ 11 เช่นกัน ตัวอย่างเช่นหากเป้าหมายของคุณคือห้องสมุดดังนั้นเป้าหมายทั้งหมดที่ลิงก์กับห้องสมุดของคุณtarget_link_librariesจะถูกรวบรวมด้วยการสนับสนุน C ++ 11
ขนตา

17

นี่เป็นอีกวิธีหนึ่งในการเปิดใช้งานการสนับสนุน C ++ 11

ADD_DEFINITIONS(
    -std=c++11 # Or -std=c++0x
    # Other flags
)

ฉันพบอินสแตนซ์ที่ใช้ได้เฉพาะวิธีการนี้และวิธีอื่น ๆ ล้มเหลว อาจเป็นเรื่องเกี่ยวกับ CMake รุ่นล่าสุด


9
สิ่งนี้จะใช้ได้ก็ต่อเมื่อคุณใช้คอมไพเลอร์ C ++ เท่านั้น ถ้าคุณใช้คอมไพเลอร์ CC ด้วยก็จะล้มเหลว
Emmanuel

5
add_definitionsควรจะใช้สำหรับการเพิ่มนิยามเท่านั้นเช่น -D SOMETHING และอย่างที่ @Emmanuel บอกไว้มันไม่สามารถใช้งานได้ในหลายกรณี
xuhdev

ฉันเคยใช้มาก่อน แต่มีปัญหาเมื่อฉันรวมไฟล์ C เพราะadd_definitionsไม่ได้ทำเพื่อตั้งค่าสถานะ
Jan Segre

17

ใน CMake ที่ทันสมัย ​​(> = 3.1) วิธีที่ดีที่สุดในการกำหนดความต้องการทั่วโลกคือ:

set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)

มันแปลว่า "ฉันต้องการ C ++ 11 สำหรับเป้าหมายทั้งหมดไม่ใช่ตัวเลือกฉันไม่ต้องการใช้ส่วนขยาย GNU หรือ Microsoft ใด ๆ " ในฐานะของ C ++ 17 สิ่งนี้ยังคงเป็นวิธีที่ดีที่สุดของ IMHO

ที่มา: การเปิดใช้งาน C ++ 11 และใหม่กว่าใน CMake


1
วิธีนี้ไม่เหมาะสำหรับ C ++ รุ่นใหม่ล่าสุดหากคุณไม่มี CMake ล่าสุด เช่นคุณไม่สามารถเปิดใช้งาน C ++ 2a ด้วยวิธีนี้จนกระทั่ง CMake 3.12
Ruslan

6

สิ่งที่ใช้ได้ผลสำหรับฉันคือการตั้งค่าบรรทัดต่อไปนี้ใน CMakeLists.txt ของคุณ:

set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")

การตั้งค่าคำสั่งนี้จะเปิดใช้งานคุณสมบัติ C ++ 11 สำหรับคอมไพเลอร์และหลังจากดำเนินการcmake ..คำสั่งคุณควรจะสามารถใช้range based for loopsในรหัสของคุณและรวบรวมได้โดยไม่มีข้อผิดพลาด


นี่คือคำตอบที่ดีที่สุดในท้ายที่สุดถ้าคุณต้องการอย่างแน่นอน-std=c++11เช่นเดียวกับการset (CMAKE_CXX_STANDARD 11)ใช้ธง-std=gnu++11ซึ่งอาจไม่พึงประสงค์
อันโตนิโอ

1
@Antonioset (CMAKE_CXX_EXTENSIONS OFF)
mloskot

3

ฉันคิดว่าแค่สองบรรทัดนี้เพียงพอแล้ว

set(CMAKE_CXX_STANDARD 11)

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")

1
สิ่งนี้เหมาะสมเมื่อเป้าหมายทั้งหมดในโครงการใช้มาตรฐาน C ++ เดียวกัน (ตัวอย่างไลบรารีที่รวบรวมและไฟล์ปฏิบัติการทั้งหมดใช้ C ++ 11 เป็นต้น) มิฉะนั้นtarget_compile_featuresฟังก์ชั่นCmake ที่ใช้สำหรับแต่ละเป้าหมายดังที่แสดงในคำตอบอื่น ๆ เป็นวิธีที่แนะนำให้ใช้มากขึ้น
อัลลัน

3

ในกรณีที่คุณต้องการเปิดใช้งานมาตรฐาน C ++ ล่าสุดต่อไปนี้คือคำตอบของDavid Graysonในส่วนของการเพิ่มค่าที่ 17 และ 20 สำหรับ CMAKE_CXX_STANDARD ล่าสุด: CMake 3.8 และ CMake 3.11

IF (CMAKE_VERSION VERSION_LESS "3.8")
    SET(CMAKE_CXX_STANDARD 14)
ELSEIF (CMAKE_VERSION VERSION_LESS "3.11")
    SET(CMAKE_CXX_STANDARD 17)
ELSE()
    SET(CMAKE_CXX_STANDARD 20)
ENDIF()

# Typically, you'll also want to turn off compiler-specific extensions:
SET(CMAKE_CXX_EXTENSIONS OFF)

(ใช้รหัสนั้นแทนset (CMAKE_CXX_STANDARD 11)คำตอบที่เชื่อมโยง)


1

cmake ที่ทันสมัยนำเสนอวิธีที่ง่ายกว่าในการกำหนดค่าคอมไพเลอร์เพื่อใช้ C ++ เฉพาะรุ่น สิ่งเดียวที่ทุกคนต้องทำคือการกำหนดคุณสมบัติเป้าหมายที่เกี่ยวข้อง ระหว่างคุณสมบัติที่ได้รับการสนับสนุนโดย cmake คุณสมบัติที่ใช้เพื่อกำหนดวิธีการคอมไพเลอร์เพื่อรองรับ C ++ รุ่นที่ระบุมีดังต่อไปนี้:

  • CXX_STANDARDตั้งค่ามาตรฐาน C ++ ที่คุณสมบัติถูกขอให้สร้างเป้าหมาย ตั้งค่านี้เป็น11เป้าหมาย C ++ 11

  • CXX_EXTENSIONSบูลีนที่ระบุว่ามีการร้องขอส่วนขยายเฉพาะคอมไพเลอร์ การตั้งค่านี้เป็นการOffปิดใช้งานการสนับสนุนส่วนขยายเฉพาะคอมไพเลอร์ใด ๆ

CMakeLists.txtเพื่อแสดงให้เห็นที่นี่เป็นตัวอย่างการทำงานน้อยที่สุด

cmake_minimum_required(VERSION 3.1)

project(testproject LANGUAGES CXX )

set(testproject_SOURCES
    main.c++
    )

add_executable(testproject ${testproject_SOURCES})

set_target_properties(testproject
    PROPERTIES
    CXX_STANDARD 11
    CXX_EXTENSIONS off
    )

-5

OS X และ Homebrew LLVM ที่เกี่ยวข้อง:

อย่าลืมโทรหา cmake_minimum_required (VERSION 3.3) และโปรเจ็กต์ () หลังจากนั้น!

หรือ CMake จะแทรกproject()โดยนัยก่อนบรรทัดที่ 1 ทำให้เกิดปัญหากับการตรวจจับเวอร์ชันของ Clang และปัญหาอื่น ๆ นี่คือปัญหาที่เกี่ยวข้อง


2
คำถามนี้ไม่เกี่ยวข้องกับ OSX หรือ LVVM โดยเฉพาะ นอกจากนี้ยังไม่มีเหตุผลที่จะต้องใช้ CMake v3.x สำหรับการพัฒนา C ++ 11 สำหรับการตรวจจับเสียงดังกราวด์ - นั่นไม่ใช่สิ่งที่ OP ถาม
einpoklum
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.