2017-12-11 27 views
0

나는 환경 변수에 생성 된 .exe 파일을 추가 설치 프로그램을 생성하는 cmake와 NSIS와 함께 cpack 사용하는 것을 시도하고있다. cpack의 cmake 창은 "절대 경로 금지 DESTINATION 설치"

나는 주 cmakelist.txt에게 내가 각 하위 디렉토리는 cmakelist.txt을 가지고 add_subdirectory(와 하위 디렉토리를 추가하는

있습니다. 지금은 끝의 주요 하위 디렉토리에

내가 추가 :

SET(CPACK_NSIS_MODIFY_PATH ON) SET(CPACK_ERROR_ON_ABSOLUTE_INSTALL_DESTINATION OFF) INCLUDE(CPack)

내가 추가 cmakelist.txt 각 "하위"에서 : SET(CPACK_ERROR_ON_ABSOLUTE_INSTALL_DESTINATION OFF) INCLUDE(CPack)

이 오류가 있습니다

CPack: Create package using NSIS CPack: Install projects CPack: - Install project: MIALSRTK CMake Error at D:... ABSOLUTE path INSTALL DESTINATION forbidden (by caller):

(이것이 내가 시도한 이유입니다. SET (CPACK_ERROR_ON_ABSOLUTE_INSTA LL_DESTINATION OFF)하지만 아무 것도 변경하지 않았습니다. 관리자로도 실행하려고했습니다. CPack NSIS, generate installer for Windows

를하지만, 경우 (팩) 작동하지 않는 것 :

는 또한 여기에 솔루션을 시도했다. 그것은 else (pack) 부분 (명령 메시지를 사용하여 어디로 가는지 보았습니다)로갑니다.

는이 문제를 해결하는 방법에 대한 어떤 생각을 가지고 있습니까? OFF에 변수 CPACK_ERROR_ON_ABSOLUTE_INSTALL_DESTINATION는 NSIS CPack 발생기에 대한 검사를 비활성화 할 수없는 설정

답변

0

: NSIS 생성기

Some CPack generators, like NSIS, enforce this internally.

당신은 상대 설치 경로를 사용하는 것보다 다른 방법이 없습니다.


건설 if(pack)pack 변수 명시 적으로cmake에 통과 한 경우에만 작동합니다. CMakeLists.txt이 CPack에서 실행되는지 여부를 탐지하는 암시 적 방법은 없습니다.

+0

좋아요. 기본 (cmakelist.txt)에 SET (Pack True CACHE BOOL "CPACK 사용")을 추가했으며 적어도 좋은 if 문을 사용했습니다. 그러나 목적지는 아직도 좋지 않다. (팩) 메시지 ("내가 여기") 가 설치하는 경우는 bin 디렉토리 에 가지 않습니다 (TARGETS \t \t mialsrtkRefineHRMaskByIntersection \t \t \t \t DESTINATION 함) ELSE (팩) 메시지 ("나는해야 설치 ( \t \t mialsrtkRefineHRMaskByIntersection \t \t \t \t DESTINATION의 $ {CMAKE_INSTALL_PREFIX}/빈) ENDIF을 대상으로) "여기에 없습니다 (Pack) –

+0

''목적지는 여전히 좋지 않다 ''는 무엇을 의미합니까? "ABSOLUTE path INSTALL DESTINATION forbidden"오류가 남아 있습니까? 또는 무엇을? – Tsyvarev

+0

아니요, .exe 파일이 원하는 디렉토리에 없습니다. (나는 모두를 원해.exe는 bin이라는 디렉토리에 들어가서, 내가 cmake와 cpack이라고 부르는 build 폴더에있다. 은 "cmake without cpack"모드로 가상 스튜디오를 사용하여 설치를 할 때 작동합니다. 하지만 내가 cpack을 사용하고있을 때는 그렇지 않습니다. 나는 cmake., 구성 및 생성을 pack = true로 수행합니다. 그래서 "목적지 저장소". 나는 Visual Studio에서 전체 프로젝트를 구축한다. (그리고 .exe는 bin/test에 없습니다). 그때 내가 cpack을 달릴 때. , cpack은 가상 스튜디오 –