2016-09-01 11 views
0

소스 제어하에있는 CMakeLists.txt 파일이 있습니다. 그러나 크로스 컴파일하려면 많은 수정 작업이 필요하므로 -DCMAKE_SYSTEM_PROCESSOR=armhf 등과 같은 옵션은 명령 줄 제한에 맞지 않습니다. 이 문제를 해결하기 위해 모든 옵션을 루트 디렉터리의 CMakeLists.txt 파일에 추가했습니다. 그들은 모양처럼CMake로 추가 CMake 파일 처리

if(TWEAK_PROJECT_XXX) 
    set(CMAKE_SYSTEM_PROCESSOR armhf CACHE STRING "") 
... 
endif() 

나는 소스 제어에 물론 개조 할 수 없다. 그러나, 명령 줄 SVN과 같은 패치하고 일부 파일을 제외하지 않습니다

svn diff --diff-cmd=diff -x -U999999 > full.diff 

를 내가 완전 사랑하는 필요를, 그래서 AFAIK, 그것 (GUI에서 이러한 가능성을 만들기위한 TortoiseSVN을 GUI를 사용할 수 없습니다). 그래서 CMakeLists.txt의 비틀기를 제외하기 위해 매번 diff를 수동으로 수정해야합니다. 이것은 불편합니다.

해결책으로 나는 비틀기를 소스 컨트롤 (SVN에서 무시)이 아닌 별도의 파일로 옮기고 CMake에 파일을 먼저 처리하기 위해 일부 명령 행 옵션을 전달하려고합니다. 이것이 가능한가? 방법?

+0

캐시 파일을 사용하고 'cmake -C '을 통해로드하십시오. https://cmake.org/cmake/help/v3.6/manual/cmake.1.html – usr1234567

+0

@ usr1234567, 저는 이것을 답으로 게시 할 수 있다고 생각합니다. 까다로운 점을 지적하십시오 : cmake'-C' 옵션은 '-CTweaks.txt'와 같이 공백없이 캐시 파일 이름을 따라야합니다. –

+0

설명서에 따르면 공간을 삽입 할 수 있습니다. 최신 CMake로 최소한의 예제로 이것을 재현 할 수 있다면, 버그를 제기하십시오. – usr1234567

답변

1

CMake는 변수의 값과 그 값을 파일에로드하여 캐시의 기초로 사용하도록 제공합니다.
를 사용하여 이러한 캐시 파일 및

cmake -C <cachefile> 

문서를 통해로드 : cmake.org/cmake/help/v3.6/manual/cmake.1.html

마찬가지로, 당신은 load_cache을 사용할 수 있지만, 그것은 당신의 구체적인 경우에 필요에 맞지 않을 것입니다.