首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >更改CMake文件的标准位置

更改CMake文件的标准位置
EN

Stack Overflow用户
提问于 2012-12-05 05:12:22
回答 1查看 15.6K关注 0票数 22

我有一个源目录,其中包含一个名为"phantom-dir/“的文件夹,我将所有不需要的生成文件放在这个目录中。我希望将CMake生成的所有文件(以及其他生成的“丑陋”文件)放在这个幻影目录中。

下面是一个小示例:

代码语言:javascript
复制
$ mkdir cmake-test
$ cd cmake-test
$ echo 'message("Hello World!")' > CMakeLists.txt
$ cmake . | grep "Hello"
Hello World!
$ tree
.
├── CMakeCache.txt
├── CMakeFiles
│   ├── CMakeCCompiler.cmake
│   ├── cmake.check_cache
│   ├── CMakeCXXCompiler.cmake
│   ├── CMakeDetermineCompilerABI_C.bin
│   ├── CMakeDetermineCompilerABI_CXX.bin
│   ├── CMakeDirectoryInformation.cmake
│   ├── CMakeOutput.log
│   ├── CMakeSystem.cmake
│   ├── CMakeTmp
│   ├── CompilerIdC
│   │   ├── a.out
│   │   └── CMakeCCompilerId.c
│   ├── CompilerIdCXX
│   │   ├── a.out
│   │   └── CMakeCXXCompilerId.cpp
│   ├── Makefile2
│   ├── Makefile.cmake
│   ├── progress.marks
│   └── TargetDirectories.txt
├── cmake_install.cmake
├── CMakeLists.txt
└── Makefile

4 directories, 20 files

默认情况下,所有CMake文件(CMakeCache.txt、cmake_install.cmake、Makefile、CMakeFiles)都写入工作目录中。但是,我想要这样的东西:

代码语言:javascript
复制
$ mkdir cmake-test
$ cd cmake-test
$ mkdir phantom-dir
$ echo 'message("Hello World!")' > CMakeLists.txt
$ // editing CMakeLists.txt to set some cmake variables.
$ cmake . | grep "Hello"
Hello World!
$ tree
.
├── phantom-dir
│   ├── CMakeCache.txt
│   ├── CMakeFiles
│   │   ├── CMakeCCompiler.cmake
│   │   ├── cmake.check_cache
│   │   ├── CMakeCXXCompiler.cmake
│   │   ├── CMakeDetermineCompilerABI_C.bin
│   │   ├── CMakeDetermineCompilerABI_CXX.bin
│   │   ├── CMakeDirectoryInformation.cmake
│   │   ├── CMakeOutput.log
│   │   ├── CMakeSystem.cmake
│   │   ├── CMakeTmp
│   │   ├── CompilerIdC
│   │   │   ├── a.out
│   │   │   └── CMakeCCompilerId.c
│   │   ├── CompilerIdCXX
│   │   │   ├── a.out
│   │   │   └── CMakeCXXCompilerId.cpp
│   │   ├── Makefile2
│   │   ├── Makefile.cmake
│   │   ├── progress.marks
│   │   └── TargetDirectories.txt
│   ├── cmake_install.cmake
├── CMakeLists.txt
└── Makefile

4 directories, 20 files

这意味着:当前目录中的Makefile (to make,"cmake . && make"),但"phantom“目录中剩余的生成文件。

我知道我可以做到:

代码语言:javascript
复制
$ cd phantom-dir/
$ cmake ../

但每次我想重新编译或重新制作cmake时,这对我来说都有点累,尤其是考虑到我修改了很多次我的CMakeLists.txt。

为了实现这个目标,我必须在CMakeLists.txt文件中设置哪些变量?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-12-05 07:14:10

您可以使用未记录的CMake选项-H-B来避免留下源目录。-H指定主CMakeLists.txt文件的路径,-B指定所需构建目录的路径。

代码语言:javascript
复制
cmake -H. -Bphantom-dir

请注意,这些都是没有文档记录的,所以我认为Kitware开发人员可以随时进行更改。

要在不离开源目录的情况下构建您的项目,您可以使用(官方)选项--build这是一种调用您选择的构建工具的跨平台方式,您可以向此工具传递任何您想要的标志。例如:

代码语言:javascript
复制
cmake --build phantom-dir -- -j3
票数 39
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13712020

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档