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})
您好,我有一个名为 "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})