HFi*_*nch 4 build cmake build-target
我有一个大致如下结构的 CMake 项目:
.
|-- library1
| |-- CMakeLists.txt
|-- library2
| |-- CMakeLists.txt
|-- executables
| |-- CMakeLists.txt
Run Code Online (Sandbox Code Playgroud)
在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.
Run Code Online (Sandbox Code Playgroud)
这会将所有 CMake 生成的文件隔离到该build文件夹中。其次,您必须小心地在正确的位置运行 CMake 构建阶段。我们可以从build文件夹中运行所有内容,例如:
要生成构建系统,请cmake ..从build目录运行。这第一步应该指向顶级 CMake 文件。
要构建(或编译)一个特定的目标,假设它被调用MyExecutable1,运行这个:
cmake --build . --target MyExecutable1
Run Code Online (Sandbox Code Playgroud)
从build目录。这次您必须确保将--build标志指向build文件夹,而不是顶级 CMake 文件。此外,在此命令中指定的目标名称应与 中使用的目标名称匹配add_executable(),而不是项目名称或其他任何名称。
与往常一样,在尝试运行 CMake 时遇到错误/问题时,它有助于清除缓存(删除build/CMakeCache.txt),或者只是build完全删除文件夹并重新开始。
| 归档时间: |
|
| 查看次数: |
5703 次 |
| 最近记录: |