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的一些手册(也在堆栈溢出中),而且我没有找到为C11项目编写正确的CMakeList的现成解决方案。

set(CMAKE_C_STANDARD 11)


这条线设定了C11标准。

set(CMAKE_COMPILER_IS_GNUCC TRUE)


这行将gcc设置为编译器。

set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS}")


此行将编译标志设置为IDE的默认值。

我的CMakeLists.txt是否正确?

最佳答案

set(CMAKE_COMPILER_IS_GNUCC TRUE)


CMAKE_COMPILER_IS_GNUCC仅应读取以测试与当前生成器相对应的编译器,例如:

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


只需将其删除。如果需要指定编译器,则可能需要阅读this(但不必这样做)。

set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS}")


这行绝对不做任何事情:您为CMAKE_C_FLAGS设置了自己的内容。只需将其删除。


我的CMakeLists.txt是否正确?


在构建时,CLion会告诉您它不是吗?

10-02 05:03