저는 CMake를 처음 접했으며 사용 방법에 대한 몇 가지 자습서를 읽고 3 개의 다른 컴파일러 용 프로그램을 만들기 위해 복잡한 50 줄의 CMake 스크립트를 작성했습니다. 이것은 아마도 CMake에 대한 모든 지식을 마칠 것입니다.
이제 내 문제는 프로그램을 만들 때 폴더를 만지거나 방해하고 싶지 않은 소스 코드가 있다는 것입니다. 모든 CMake 및 make
출력 파일과 폴더가으로 이동하기 ../Compile/
를 원하므로 CMake 스크립트에서 몇 가지 변수를 변경했으며 내 노트북에서 다음과 같은 작업을 수행했을 때 언젠가는 작동했습니다.
Compile$ cmake ../src
Compile$ make
그것으로 내가 지금있는 폴더에 깨끗한 출력이 있었는데, 정확히 내가 찾고있는 것입니다.
이제 다른 컴퓨터로 옮겨서 CMake 2.8.11.2를 다시 컴파일했고 거의 정사각형으로 돌아 왔습니다! 항상 src
my 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
?