build - cmake 项目仅构建一个特定的可执行文件(及其依赖项)

标签 build cmake build-target

我有一个大致如下结构的 CMake 项目:

.
|-- library1
|   |-- CMakeLists.txt
|-- library2
|   |-- CMakeLists.txt
|-- executables
|   |-- CMakeLists.txt

executables我生成了我的 2 个可执行文件。我想知道是否可以只生成一个可执行文件及其依赖项而不是全部。我听说过 cmake --target选项,但我无法让它与 cmake/3.13.4 一起使用.

最佳答案

这里有几个潜在的问题。首先,典型的 CMake 工作流程放置 build文件夹作为顶级 CMake 文件的同级。所以你的文件层次结构应该是这样的:

.
|-- CMakeLists.txt
|-- library1
|   |-- CMakeLists.txt
|-- library2
|   |-- CMakeLists.txt
|-- executables
|   |-- CMakeLists.txt
|-- build    <------------ Run CMake commands from here.

这会将所有 CMake 生成的文件隔离到 build文件夹。其次,您必须小心地在正确的位置运行 CMake 构建阶段。我们可以从 build 中运行所有内容文件夹,例如:
  • 要生成构建系统,请运行 cmake ..来自 build目录。这第一步应该指向顶级 CMake 文件。
  • 要构建(或编译)一个特定的目标,假设它被称为 MyExecutable1 ,运行这个:
    cmake --build . --target MyExecutable1
    

    来自 build目录。您必须确保指向--build标志在 build文件夹,不是 这次是顶级 CMake 文件。此外,在此命令中指定的目标名称应与 add_executable() 中使用的目标名称相匹配。 , 不是 项目名称或其他任何内容。
  • 与往常一样,在尝试运行 CMake 时遇到错误/问题时,清除缓存(删除 build/CMakeCache.txt )或只是删除 build 会有所帮助。文件夹完全并重新开始。
  • 关于build - cmake 项目仅构建一个特定的可执行文件(及其依赖项),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57412591/

    相关文章:

    android - 无法建立生产APK

    Qt/CMake 难以处理新的源文件

    cmake - 如何制作CMake包?

    cmake - 更改 cpack 为组件 RPM 生成的名称

    android - API 级别 11 分钟是 9,我该怎么做才能解决这个问题

    c++ - 将类似 Makefile 的条件逻辑添加到 visual studio 的构建系统

    android build/envsetup.sh addcompletions() "local T dir f"是什么意思?

    go - "go build"一个文件夹中的多个程序