如何控制cmake的子目录编译顺序?

2024-01-07

这是我的 CMakeLists.txt:

ADD_SUBDIRECTORY(third)
ADD_SUBDIRECTORY(utils)
ADD_SUBDIRECTORY(rpc)

但是目录'rpc'将在目录'utils'之前编译,实际上'rpc'依赖于'utils',所以我会得到一个链接错误。

如何让“rpc”在“utils”之后编译?

Thanks.


当你使用目标链接库() http://www.cmake.org/cmake/help/v3.0/command/target_link_libraries.html函数并向其传递其他目标名称,CMake 会自动将此目标设置为依赖项。您还可以使用添加依赖项() http://cmake.org/cmake/help/v3.0/command/add_dependencies.html手动指定依赖项。

另请注意,源编译的顺序与您的问题无关。链接错误(我猜,您看到“未定义的引用”错误)是因为您没有正确链接目标。

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

如何控制cmake的子目录编译顺序? 的相关文章

  • CC、gcc 和 g++ 之间的区别?

    CC gcc g 这3个编译器在编译时有什么区别 汇编语言中的 C 和 C 代码 代码生成 可用库 语言特性等 这个问题的答案是特定于平台的 例如 Linux 上发生的情况与 Solaris 上发生的情况不同 最简单的部分 因为它不是特定于
  • 检查 cmake 中顺序不正确的可选目标

    我目前正在开发一个使用 cmake 作为构建系统的大型软件项目 但我有一个问题要检查另一个目标是否存在 或将存在 例如 有根 CMakeLists txt 和两个模块 可以选择将其作为子文件夹添加到软件项目中 A CMakeLists tx
  • 如何强制 Perl 按需重新编译使用“/o”编译的正则表达式?

    技术问题 给定一个正则表达式 my regEx qr whatever myVar oxi Notice o for compile once 强制重新编译的最有效方法是什么一经请求 例如 当我从程序逻辑中知道 myVar值改变 而不下降
  • 将 gcov 与 CMake/CDash 结合使用的详细指南?

    我在我的项目中使用 CMake 并设置了 cdash 服务器以进行连续 夜间构建 一切运行良好 通过设置 crontab 我们可以将每小时 每晚的构建 测试结果自动上传到我们的 cdash 服务器 我的下一步是将测试覆盖率报告添加到构建中
  • 带包装的 CMAKE RPATH

    我正在使用 cmake 创建包 我有以下结构 bin bin1 lib lib1 lib2 其中lib1和lib2是外部动态库 如何设置 RPATH 以便它自动与 lib1 和 lib2 链接 我也在这方面对 cmake 很感兴趣 Cmak
  • 在 CMake 中使用 GLOB 指定源文件还是单独指定每个文件更好?

    CMake 提供了多种方法来指定目标的源文件 一种是使用通配符 文档 https cmake org cmake help latest command file html 例如 FILE GLOB MY SRCS dir 另一种方法是单独
  • 编译器在函数名称前添加下划线前缀的原因是什么?

    当我看到 C 应用程序的汇编代码时 如下所示 emacs hello c clang S O hello c o hello s cat hello s 函数名称以下划线作为前缀 例如callq printf 为什么这样做以及它有什么优点
  • 如何最好地为 Visual Studio 2017 构建的 CMake C++ 项目设置输出目录?

    我使用 Visual Studio 2017 使用 vcxproj 文件构建 C 桌面项目 我喜欢默认行为 其中输出目录是项目下面的子目录 例如 myproj sln myproj vcxproj x64 myproj release my
  • 使用cmake交叉编译gRPC

    我正在尝试使用 cmake 交叉编译 gRPC 我实际上做到了 不幸的是 我的方法涉及在 CMakeLists txt 内部进行修改 问题是 当我尝试编译 gRPC 时 它使用的是他刚刚编译的 protobuffer 它无法在 x86 计算
  • 将代码拆分为多个 .cpp 会减少编译时间吗?

    假设我正在处理一个相当复杂的课程 一半的方法已经完成并经过测试 但我仍在开发另一半 如果我将完成的代码放在一个 cpp 中 将其余代码放在另一个 cpp 中 那么当我仅更改 正在进行的 cpp 中的代码时 Visual Studio 或任何
  • Clion如何将文件添加到项目中

    这看起来真的很基本 如何将文件添加到项目中而无需手动编辑CMakeLists txt 例如另一个目录中的源文件 CLion 解析CMakeLists txt并使用它生成项目视图 但我相信将文件添加到项目的唯一方法是编辑CMakeLists
  • CMake:如何更改单个目标的编译器

    我有使用交叉编译器的嵌入式项目 我想介绍一下Google测试 用原生GCC编译器编译 另外使用 CTC 编译器构建一些单元测试目标 Briefly 我有 3 个不同的目标并用 3 个不同的编译器编译它们 如何表达它CMakeLists tx
  • CMake 错误:“add_subdirectory 未给出二进制目录”

    我正在尝试将 Google Test 集成到更大项目的子项目中 但找不到令我满意的解决方案 我有两个限制 Google Test 的源代码已经位于项目结构中的某个位置 因此不能使用 URL 从 git 存储库下载它 Google Test
  • 将 cmake 与 nmake x64 一起使用

    我使用 cmake 生成 NMake 文件 一切正常 我使用 x64 工具集 没有 Visual Studio 只有 SDK 因此我输入 nmake 但它生成 x86 构建而不是 x64 构建 你知道为什么吗 以及如何强制 nmake 以
  • 使用 CMake 编译时更改头文件位置会导致缺少 vtable 错误

    对于一个大型 C 项目 我需要从 qmake 过渡到 CMake 但是在处理一个玩具示例时 我遇到了一些我不理解的行为 示例代码具有单个头文件 当该头文件移动到子目录中时 我收到 MainWindow 类缺少 vtable 的错误 CMak
  • WPF C# 无法找到子文件夹图像资源

    我在程序集中有几个图像 我已在其属性设置中将它们全部标记为资源 为了进行测试 我将图像放在项目的根目录中 Img Source new BitmapImage new Uri pack application MyAssembly comp
  • 如何在 CMake 中运行基本的“add_custom_command”

    我只是想启动并运行一个基本的 CMake 示例 它可以运行一些基本的命令行命令 我已经研究这个有一段时间了 但没有任何运气 我完全用错了吗 任何和所有的意见将不胜感激 cmake minimum required VERSION 3 0 a
  • 是否可以让 cmake 构建文件(CMakeLists.txt)不在 CLion 的根目录中

    是否可以让 cmake 构建文件 CMakeLists txt 不在 CLion 的根目录中 我目前正在开发的项目中 cmake 构建文件不在 CLion 项目的根目录中 在 out Debug 目录中 我希望 CLion 打开该项目的根目
  • C# 编译器 /optimize 命令行选项是否影响 JITter?

    我一直在读埃里克 利珀特 https stackoverflow com users 88656 eric lippert s article http blogs msdn com b ericlippert archive 2009 0
  • 如何将 OpenCV 的测试框架与 CMake 结合使用?

    好像 OpenCV 有一个测试框架 https github com Itseez opencv tree ef91d7e8830c36785f0b6fdbf2045da48413dd76 modules ts include opencv

随机推荐