[linux] CMAKE_INSTALL_PREFIX 사용 방법

기본 / 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

내가 틀렸다면 알려주세요. 배워야 할 일이 많습니다. 재미 있어요.


답변