CMake: CMakeLists для C11

#cmake #ide #clion #c11

#cmake #ide #clion #c11

Вопрос:

 cmake_minimum_required(VERSION 3.6)
project(Example)

set(CMAKE_C_STANDARD 11)
set(CMAKE_COMPILER_IS_GNUCC TRUE)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS}")

set(SOURCE_FILES main.c)
add_executable(Example ${SOURCE_FILES})
  

Я изучаю C11 и использую CLion IDE.
В этой среде IDE единственным возможным вариантом является использование CMake для проектов, и я прочитал несколько руководств по CMake (в stack overflow тоже), и я не нахожу готового решения для написания правильных CMakeLists для проектов C11.

 set(CMAKE_C_STANDARD 11)
  

Эта строка устанавливает стандарт C11.

 set(CMAKE_COMPILER_IS_GNUCC TRUE)
  

Эта строка устанавливает gcc в качестве компилятора.

 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS}")
  

Эта строка устанавливает флаги компиляции по умолчанию для IDE.

Является ли мой CMakeLists.txt правильно?

Ответ №1:

 set(CMAKE_COMPILER_IS_GNUCC TRUE)
  

CMAKE_COMPILER_IS_GNUCC следует читать только для проверки того, какой компилятор соответствует вашему текущему генератору, что-то вроде:

 if(CMAKE_COMPILER_IS_GNUCC)
    # do something special for GNU C compiler
endif()
  

Просто удалите его. Возможно, вы захотите прочитать это, если вам нужно указать свой компилятор (но вам это не нужно).

 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS}")
  

Эта строка абсолютно ничего не делает: вы устанавливаете CMAKE_C_FLAGS ее собственное содержимое. Просто удалите его.

Является ли мой CMakeLists.txt правильно?

При сборке CLion сообщает вам, что это не так?

Комментарии:

1. Спасибо. Я удалил эти строки, и они работают быстрее на этапе загрузки символов.