【问题标题】:CMakeLists Multiple Source FilesCMakeLists 多个源文件
【发布时间】:2018-12-28 13:30:49
【问题描述】:

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

【问题讨论】:

  • 这三个来源是否都为同一个程序做出了贡献,还是各自为自己的程序做出贡献?我会猜到前者,但你后来的 cmets 似乎建议后者。
  • 您想为其他源文件创建可执行文件吗?只需添加更多add_executable 电话。
  • ... 还要注意add_executable 的第一个参数是要创建的可执行文件的名称。这可以与您的示例中的项目名称相同,但无论如何不必如此。
  • @JohnBollinger 它们是 3 个独立的程序

标签: c cmake clion


【解决方案1】:

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})

【讨论】:

  • 干杯有很大帮助!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-05-04
  • 2020-05-01
  • 1970-01-01
  • 2023-03-13
  • 1970-01-01
  • 2017-11-14
  • 1970-01-01
相关资源
最近更新 更多