我有一个大致如下结构的 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()
中使用的目标名称相匹配。 , 不是 项目名称或其他任何内容。 build/CMakeCache.txt
)或只是删除 build
会有所帮助。文件夹完全并重新开始。 关于build - cmake 项目仅构建一个特定的可执行文件(及其依赖项),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57412591/