I have a source directory with a folder called "phantom-dir/" where I put all generated files I don't need. I want to put all generated files by CMake inside this phantom directory (together with other generated and "ugly" files).
A mini example:
$ 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
By default, all CMake files (CMakeCache.txt, cmake_install.cmake, Makefile, CMakeFiles) are written in the working directory. But, I want something like that:
$ 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
That means: the Makefile in the current directory (to make, "cmake . && make"), but the remaining generated files inside the "phantom" directory.
I know I can make it with:
$ cd phantom-dir/
$ cmake ../
But it's a little tiresome for me to do it each time I want to re-compiling or remake cmake, above all taking into account that I'm modifying many times my CMakeLists.txt.
Which variables I have to set in the CMakeLists.txt file in order to achieve it?
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…