CMakeLists多个源文件

时间:2018-12-28 13:30:49

标签: c cmake clion

嗨,我有一个名为"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,以便可以为每个源文件构建可执行文件?

1 个答案:

答案 0 :(得分:1)

您的add_executable()中的每个CMakeLists.txt调用都指定了一个单独的可执行文件。由于需要三个可执行文件,因此需要三个这样的调用。

此外,每个可执行文件都需要一个不同的名称。在每个可执行文件是从其自己的源文件构建的情况下,通常会将源名称和可执行文件关联起来。特别是,我希望将从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})