22

「phantom-dir/」というフォルダのあるソースディレクトリがあり、生成された不要なファイルをすべて配置します。CMakeによって生成されたすべてのファイルをこのファントムディレクトリ内に配置したいと思います(他の生成された「醜い」ファイルと一緒に)。

ミニ例:

$ 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)が作業ディレクトリに書き込まれます。しかし、私はそのようなものが欲しいです:

$ 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(make、「cmake。&& make」)ですが、残りの生成されたファイルは「phantom」ディレクトリ内にあります。

私は私がそれを作ることができることを知っています:

$ cd phantom-dir/
$ cmake ../

しかし、CMakeLists.txtを何度も変更していることを考慮に入れて、cmakeを再コンパイルまたは再作成するたびにそれを行うのは少し面倒です。

それを達成するために、CMakeLists.txtファイルにどの変数を設定する必要がありますか?

4

1 に答える 1

39

文書化されていないCMakeオプション-Hを利用し-Bて、ソースディレクトリを離れないようにすることができます。 -HメインのCMakeLists.txtファイルへの-Bパスを指定し、目的のビルドディレクトリへのパスを指定します。

cmake -H. -Bphantom-dir

これらは文書化されていないため、Kitwareの担当者はいつでも変更できると思います。

ソースディレクトリを離れずにプロジェクトをビルドするには、(公式)オプションを使用できます。--build これは、選択したビルドツールを呼び出すクロスプラットフォームの方法であり、このツールに必要なフラグを渡すことができます。例えば

cmake --build phantom-dir -- -j3
于 2012-12-04T23:14:10.320 に答える