CMakeLists 多个源文件

CMakeLists Multiple Source Files

您好,我有一个名为 "Question 1" 的目录,其结构如下:

.idea 
cmake-build-debug
1a.c
1b.c
1c.c
CMakeLists.txt

.idea and cmake-build-debug 是包含创建项目时默认出现的其他数据的文件夹(我使用的是 CLion),其他 3 个是我的源文件,即 1a.c, 1b.c, 1c.c。我的 CMakeLists.txt 文件包含以下内容:

cmake_minimum_required(VERSION 3.7)
project(CLion)

set(CMAKE_C_STANDARD 99)

set(SOURCE_FILES 1b.c)
add_executable(CLion ${SOURCE_FILES})

正如你可以想象的那样,我只能 运行 源文件 1b.c。如何编辑 CMakeLists.txt 以便为每个源文件构建可执行文件?

CMakeLists.txt 中的每个 add_executable() 调用都指定一个单独的可执行文件来构建。因为你想要三个可执行文件,所以你需要三个这样的调用。

此外,每个可执行文件需要不同的名称。在每个可执行文件都是从其自己的源文件构建的情况下,源文件和可执行文件的名称通常是相关的。特别是,我希望从 1b.c 构建的可执行文件被命名为 1b.

综上所述,这是一种方法:

cmake_minimum_required(VERSION 3.7)
project(CLion)

set(CMAKE_C_STANDARD 99)

add_executable(1a 1a.c)
add_executable(1b 1b.c)
add_executable(1c 1c.c)

请注意,您不需要使用变量来指定可执行文件的源文件。此外,如果你使用变量,那么变量名SOURCE_FILES也没什么特别的。例如,您可以通过引入每个目标的源变量来不必要地使上面的示例复杂化,如下所示:

cmake_minimum_required(VERSION 3.7)
project(CLion)

set(CMAKE_C_STANDARD 99)

set(SOURCES_1A 1a.c)
set(SOURCES_1B 1b.c)
set(SOURCES_1C 1c.c)

add_executable(1a ${SOURCES_1A})
add_executable(1b ${SOURCES_1B})
add_executable(1c ${SOURCES_1C})