2017-12-02 9 views
1

CMake로 빌드 된 프로젝트에서 작업 중이므로 CMakeLists.txt을 작성하고 있습니다. 이 파일에서 임의의 문자열이 아닌 여러 옵션 중 하나만 취할 수있는 (캐싱 된) CMake 변수를 갖고 싶습니다. 간단히하기 위해, "빨강", "녹색"또는 "파란색"을 취할 수있는 문자열로 설정해 봅시다.CMake 다중 옵션 설정

임의의 문자열을 설정 한 다음 유효성을 검사하는 것 외에 다른 CMake 버전으로 이것을 수행 할 수 있습니까?

+0

수행하려는 작업에 대해 자세히 알려주시겠습니까? CMake 지원 프로젝트를 제공하고 있으며'cmake-gui '에서 선택할 수있는'option()'의 값을 제한하고 싶습니까? CMake 헬퍼/래퍼 함수를 ​​작성하고 전달 된 매개 변수의 값을 제한 하시겠습니까? 특정 변수에 대한'set()'호출이 사전에 정의 된 값 세트를 얻지 못하게하려고합니까? – Florian

+0

@Florian : 편집을 참조하십시오. 그리고 예, 저는 ccmake (또는 cmake-gui)를 실행할 때 나타나는 목록과 같은 것을 원합니다. – einpoklum

답변

2

대답은 "Constraining Values with ComboBoxes in CMake (cmake-gui)" 이름 Kitware의 블로그 게시물 중 하나에서 찾을 수있다 : 어떻게 작동하는지 그래서 여기

은 : 당신은, 일부 값 세트에 제한 평소처럼 그것을 정의 할 각 캐시 항목에 대한 예컨대 STRING 캐시 변수로 기본값과 :

set(BaseName “binary” CACHE STRING “BaseName chosen by the user at CMake configure time”) 

이제 초기 기본값 캐시 엔트리를 형성 한 후, 그 값이 제한되어야하는 스트링의 세트를 정의

을 set_property 호출 후
set_property(CACHE BaseName PROPERTY STRINGS binary octal decimal hexadecimal) 

는, cmake-GUI는 "기본 이름"캐시 항목을 편집하기위한 드롭 다운 콤보 상자를 제시 알고 있으며, 그것이 제시해야이 항목에 대한 네 가지 유효한 선택이 binary 것을 알고, octal, decimalhexadecimal.