如何将 CMake 文件 (GLOB SRCS *.) 与构建目录一起使用

2024-01-08

这是我当前的 CMakeLists.txt 文件

cmake_minimum_required(VERSION 3.3)
set(CMAKE_C_FLAGS " -Wall -g ")
project( bmi )
file( GLOB SRCS *.cpp *.h )
add_executable( bmi ${SRCS}) 

这是从我的源目录构建的,但之后我必须清理所有额外的文件。我的问题是,如果我的所有源文件都位于同一源目录中,如何从构建目录构建它?

thanks


如果您确实需要使用文件(GLOB …),则此 CMakeLists.txt 应该可以工作:

cmake_minimum_required(VERSION 3.3)
project(bmi)
add_definitions("-Wall" "-g")
include_directories(${PROJECT_SOURCE_DIR})
file(GLOB SRC_FILES ${PROJECT_SOURCE_DIR}/*.cpp)
add_executable(bmi ${SRC_FILES})

在这种情况下,每次添加或删除源文件时,您都必须从构建目录启动 cmake:

cmake <your_source_dir> -G <your_build_generator>

正如 Phil 提醒的那样,CMake 文档不建议使用 GLOB。但也有一些例外。您将获得更多这方面的信息post https://stackoverflow.com/questions/1027247/best-way-to-specify-sourcefiles-in-cmake.

如果您不满足这些例外情况,您宁愿列出源文件而不是使用 GLOB :

set(SRC_FILES ${PROJECT_SOURCE_DIR}/main.cpp
              ${PROJECT_SOURCE_DIR}/bmi.cpp
              … )

注意:如果您在 .cpp 文件中 #include .h 文件,我认为没有任何理由将它们放入 add_executable 中,您只需要使用 include_directories 指定包含目录。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将 CMake 文件 (GLOB SRCS *.) 与构建目录一起使用 的相关文章

随机推荐

  • Java 将字符串数组映射为整数数组

    我在 SO 上找到了这段代码 用于将字符串映射到整数 Arrays stream myarray mapToInt Integer parseInt toArray 但如何让它映射到 Integer 类型而不是原始 int 呢 我尝试从In
  • 在 Android 中保存长文本的最佳实践

    我想知道将字符串值存储在strings xml文件 即使字符串非常大 更具体地说 我有一个游戏 我在其中显示游戏规则 所有字符的总和大于 700 个字符 目前 我将这些长字符串分解为较小的字符串 分成段落 所以我想知道 拥有那些包含超过 7
  • Phonegap/Cordova 地理定位在 Android 上不起作用

    我在两个模拟器中的 Android 上运行地理定位时遇到了麻烦 即使我geo fix通过 telnet 和设备上 适用于 iOS WP8 和浏览器 当我使用以下代码向设备询问位置时 我总是收到错误 在我的情况下是自定义的 Retrievin
  • 如何捕获 ExoPlayer 的所有错误?

    我实现了 ExoPlayer 作为我的应用程序的播放器 但我不知道如何捕获所有 ExoPlayer 错误以避免应用程序崩溃 我添加了以下侦听器 但它没有捕获所有错误 我必须使用 DRM 它有时会因某些问题而崩溃 但我之前无法设置侦听器 因为
  • C# - 删除仅提供 Control 为 ToolTip 的 ToolTip

    是的 这个问题已经被问过here https stackoverflow com questions 1165540 how do i remove a tooltip currently bound to a control at SO
  • Smack 4.1 回复超时内无响应

    我在我的 Android 应用程序中使用以下代码 Thread d new Thread new Runnable Override public void run SmackConfiguration setDefaultPacketRe
  • Mongoid - 通过引用文档查询

    我有一个名为 Ad 的模型 如下所示 class Ad include Mongoid Document referenced in category end 和类别模型 class Category include Mongoid Doc
  • Sklearn Transformers:如何将编码器应用于多个列并在生产中重用它?

    我在训练期间使用标签编码器 并希望通过保存并稍后加载来在生产中使用相同的编码器 无论我在网上找到什么解决方案 都只允许标签编码器一次应用于单个列 如下所示 for col in col list df col df col apply La
  • 我应该使用 Path.GetRandomFileName 还是使用 Guid?

    我需要生成唯一的文件夹名称 我应该使用路径 GetRandomFileName http msdn microsoft com en us library system io path getrandomfilename 28v vs 11
  • 当我们使用 antd 表中的 rowSelection 选择父行时选择子行

    我正在尝试使用 antd 表进行 rowselection Reactjs 我正在尝试这个ant components table demo expand children https ant design components table
  • 在R中添加一列两个坐标的距离

    我有一个这样的数据框 id value lat1 lng 1 lat2 lng2 dist 124 50 4 13 2423 46 2342 13 2423 46 2342 537 34 2 13 2434 46 2331 13 2423
  • 如何组合两个不同的 monad

    我正在测试 REST 服务器 我在 IO monad 中击中它并在中模拟它State Db where Db跟踪服务器的假定状态 以下函数应该运行两个版本并比较结果 check Eq a MonadState d s gt s a gt I
  • “折叠”LINQ 扩展方法在哪里?

    我发现在MSDN 的 Linq 示例 http msdn microsoft com en us vcsharp aa336747 aspx foldSimple我想使用一个名为 Fold 的简洁方法 他们的例子 double double
  • Pandas Wide_to_long 的行为与 Python 2.7 中的先前版本有很大不同

    我升级了笔记本电脑并安装了 Python 2 7 和 Pandas 0 23 由于 Wide to long 的结果不同 我以前工作的所有脚本都不再运行 数据框如下所示 Index ID Text column abc A abc B ab
  • Python——如何查看不适合屏幕的输出?

    我应该说我正在寻找问题的解决方案查看不适合您屏幕的输出 例如 range 100 将显示高度为 30 的终端中的最后 30 行 我只是希望被推向正确的方向 并且很好奇你们是如何解决这个问题的 当您遇到希望可以方便地滚动浏览一些大输出的情况时
  • 更改 teechart 中的单点颜色

    我在java中使用teechart 我想改变一系列点的颜色 而不是所有点 如果点的值超过特定值 则将点变成红色 我只知道如何更改所有点的颜色 这是我的代码 xline getPointer setVisible true 数据点突出显示 x
  • 与 mdf 文件的多个连接

    我正在为一个大学项目创建一个使用 C 的 Net 应用程序 并且需要一些帮助 我在网络驱动器上托管了一个 mdf 文件 并且需要多个客户端才能从其应用程序访问此数据库 每个客户端计算机都将运行自己的 sql express 实例 我可以从我
  • 实体框架包括扩展返回大量数据

    我有两个实体 User 和 UserPermission User 实体包含所有常规字段 Id Username Email 等 UserPermission 实体有两个值 UserId 和 PermissionId 我编写了一个存储库方法
  • 在 PHP 中,检查 30 分钟是否已过的示例?

    我有一个验证功能 用户将在 30 分钟后自动注销 我想在身份验证功能中存储登录时间 时间戳 然后 每次调用需要身份验证的函数时 我都会更新该时间 如果距上次通话已过去 30 分钟 则会自动重新进行身份验证 我将把上次访问时间戳或日期存储在全
  • 如何将 CMake 文件 (GLOB SRCS *.) 与构建目录一起使用

    这是我当前的 CMakeLists txt 文件 cmake minimum required VERSION 3 3 set CMAKE C FLAGS Wall g project bmi file GLOB SRCS cpp h ad