기본 / usr / local 대신 / usr에 설치하여 설치 대상으로 Makefile을 생성하고 싶습니다. 빌드 디렉토리가 소스 하위 디렉토리에서 완료되었다고 가정하면 다음을 실행합니다.
cmake -DCMAKE_INSTALL_PREFIX:PATH=/usr ..
CMakeCache.txt에는 다음이 포함됩니다. CMAKE_INSTALL_PREFIX:PATH=/usr
(OK?)
이제 실행합니다.
하다 설치하다
모든 파일은 여전히 usr / local에 설치됩니다. 뭐가 잘못 되었 니?
편집 : CMakeLists.txt 프로젝트 파일에 CMAKE_INSTALL_PREFIX가 없습니다. cmake를 실행하기 전에 출력 디렉토리에서 모든 것을 삭제합니다. CMakeLists.txt의 설치 지시문은 다음과 같습니다.
install(TARGETS mylibrary DESTINATION lib)
답변
이는 다음과 같아야합니다 ( 문서 참조 ).
cmake -DCMAKE_INSTALL_PREFIX=/usr ..
답변
이 변수를 사용하는 방법에는 두 가지가 있습니다.
-
Job이 언급 한 것처럼 명령 줄 인수로 전달합니다.
cmake -DCMAKE_INSTALL_PREFIX=< install_path > ..
-
에 가치 할당
CMakeLists.txt
:SET(CMAKE_INSTALL_PREFIX < install_path >)
그러나 명령 전에 배치하는 것을 잊지 마십시오
PROJECT(< project_name>)
. 그렇지 않으면 작동하지 않습니다!
답변
그러나 PROJECT (<project_name>) 명령 앞에 배치하는 것을 잊지 마십시오. 그렇지 않으면 작동하지 않습니다!
cmake를 사용한 첫 주-몇 년 동안 GNU 자동 도구를 사용 했으므로 여전히 배우고 있지만 (m4 매크로를 작성 하는 것이 더 낫습니다) 프로젝트 설정 후 CMAKE_INSTALL_PREFIX 를 수정 하는 것이 더 좋은 곳 이라고 생각합니다 .
CMakeLists.txt
cmake_minimum_required (VERSION 2.8)
set (CMAKE_INSTALL_PREFIX /foo/bar/bubba)
message("CIP = ${CMAKE_INSTALL_PREFIX} (should be /foo/bar/bubba")
project (BarkBark)
message("CIP = ${CMAKE_INSTALL_PREFIX} (should be /foo/bar/bubba")
set (CMAKE_INSTALL_PREFIX /foo/bar/bubba)
message("CIP = ${CMAKE_INSTALL_PREFIX} (should be /foo/bar/bubba")
첫 실행 (캐시 없음)
CIP = /foo/bar/bubba (should be /foo/bar/bubba
-- The C compiler identification is GNU 4.4.7
-- etc, etc,...
CIP = /usr/local (should be /foo/bar/bubba
CIP = /foo/bar/bubba (should be /foo/bar/bubba
-- Configuring done
-- Generating done
두 번째 실행
CIP = /foo/bar/bubba (should be /foo/bar/bubba
CIP = /foo/bar/bubba (should be /foo/bar/bubba
CIP = /foo/bar/bubba (should be /foo/bar/bubba
-- Configuring done
-- Generating done
내가 틀렸다면 알려주세요. 배워야 할 일이 많습니다. 재미 있어요.