저는 CMake를 처음 접했으며 사용 방법에 대한 몇 가지 자습서를 읽고 3 개의 다른 컴파일러 용 프로그램을 만들기 위해 복잡한 50 줄의 CMake 스크립트를 작성했습니다. 이것은 아마도 CMake에 대한 모든 지식을 마칠 것입니다.
이제 내 문제는 프로그램을 만들 때 폴더를 만지거나 방해하고 싶지 않은 소스 코드가 있다는 것입니다. 모든 CMake 및 make출력 파일과 폴더가으로 이동하기 ../Compile/를 원하므로 CMake 스크립트에서 몇 가지 변수를 변경했으며 내 노트북에서 다음과 같은 작업을 수행했을 때 언젠가는 작동했습니다.
Compile$ cmake ../src
Compile$ make
그것으로 내가 지금있는 폴더에 깨끗한 출력이 있었는데, 정확히 내가 찾고있는 것입니다.
이제 다른 컴퓨터로 옮겨서 CMake 2.8.11.2를 다시 컴파일했고 거의 정사각형으로 돌아 왔습니다! 항상 srcmy CMakeLists.txt가 있는 폴더로 물건을 컴파일합니다 .
내 CMake 스크립트에서 디렉토리를 선택하는 부분은 다음과 같습니다.
set(dir ${CMAKE_CURRENT_SOURCE_DIR}/../Compile/)
set(EXECUTABLE_OUTPUT_PATH ${dir} CACHE PATH "Build directory" FORCE)
set(LIBRARY_OUTPUT_PATH ${dir} CACHE PATH "Build directory" FORCE)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${dir})
set(CMAKE_BUILD_FILES_DIRECTORY ${dir})
set(CMAKE_BUILD_DIRECTORY ${dir})
set(CMAKE_BINARY_DIR ${dir})
SET(EXECUTABLE_OUTPUT_PATH ${dir})
SET(LIBRARY_OUTPUT_PATH ${dir}lib)
SET(CMAKE_CACHEFILE_DIR ${dir})
그리고 이제는 항상 다음으로 끝납니다.
-- Build files have been written to: /.../src
내가 뭔가를 놓치고 있습니까?
CMAKE_BINARY_DIR또는CMAKE_CACHEFILE_DIR. 이러한 모든set()호출 을 제거 하고 그냥 수행 하면 어떻게됩니까cd Compile; rm -rf *; cmake ../src?