【问题标题】:Which files to add in CMake build scripts?在 CMake 构建脚本中添加哪些文件?
【发布时间】:2020-12-29 09:21:18
【问题描述】:

这可能是一个简单的问题。我们举一个.c程序的例子:

   #include <stdio.h> 
   #include "Example.h"

   int main(){
   
   int x;
   return 0;
 } 

如果我有一些包含一些 .h 文件的 C 代码,即“Example.h”,并且在该头文件中声明了一些在“Example.c”中实现的函数。现在我想使用 CMake 文件构建这个示例。我是否还需要在构建过程(CMake 文件)中包含“Example.c”文件(“除了 Example.h”)?

【问题讨论】:

  • “我是否需要在构建过程(CMake 文件)中包含“Example.c”文件(“除了 Example.h”)? - 不知道你问什么。如果您想构建一个可执行文件,并且Example.c 为该可执行文件定义了main 函数,那么显然您需要将此文件包含到CMakeLists.txt。您是否阅读过 CMake 教程(其中任何一个)?每个教程都描述了创建可执行文件。

标签: c cmake build compilation


【解决方案1】:

在 CMake 中,您必须为要创建的可执行文件定义源文件,是的,这将包括 Example.hExample.c。例如:

add_executable(myprogram Example.c Example.h)

或类似的东西:

set(SRCS "Example.c" "Example.h")
add_executable(myprogram ${SRCS})

以下链接很好地介绍了 CMake:

https://cliutils.gitlab.io/modern-cmake/chapters/basics.html

虽然:

CMake 很聪明,只会编译源文件扩展名。对于大多数意图和目的,标题将被忽略;列出它们的唯一原因是让它们出现在 IDE 中。

【讨论】:

  • 我是这么认为的,谢谢你的回答:)
  • 如果即“Example.h”包含一些“Example1.h”,我还需要在 CMake 脚本中添加“Example1.h”吗?
  • @miki1307 不一定,add_executable(myprogram ...) 将创建目标myprogram 并编译给定的c 文件。使用target_include_directories(myprogam ${MY_DIR}) 将允许可执行文件找到您需要的头文件,因此只要包含它们,如果将MY_DIR 设置为头文件的目录,您应该能够构建您的可执行文件。然后另外,当您需要外部库时,您可以使用target_link_libraries(myprogram other_lib)
猜你喜欢
  • 1970-01-01
  • 2020-03-14
  • 2016-04-25
  • 1970-01-01
  • 1970-01-01
  • 2021-03-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多