2017-01-11 8 views
0

모든 것이 제목에 있지만 더 많은 컨텍스트 정보가 있습니다. 모든 구성 요소가 독립적 인 라이브러리를 만들고 있습니다 (단지 1 git repo를 관리하는 것이 더 쉽기 때문에). 해당 라이브러리의 루트 폴더에는 정확히 3 개의 "흥미로운 폴더"(src, tests, include/components_name)가있는 라이브러리 구성 요소의 각 부분에 대해 1 개의 하위 폴더가 있습니다. foreach 루프에서 이러한 폴더를 하드 코드하여 모든 작업이 기본적으로 모든 모듈에 대해 수행되도록했습니다.cmake가 보유한 이름 목록은 어디에 있습니까?

문제는 실제로 모듈 중 하나가 상대적으로 일반적인 "option_parser"라는 이름이 붙은 것으로 보이며 cmake가 "예약"한 것처럼 보이며 모든 것으로도 파생 된 것으로 보입니다. "option_parser_test", "option_parser_tests"및 "option_parser_"루트를 기반으로하는 임의의 다른 이름을 시도했습니다.

내 질문은 다음과 같습니다. 여기서 나는 쉐크 (cmake)가 보유한 이름을 피하는 법을 배울 수 있습니까? 그리고 어쨌든 내 바이너리에 영향을 미칠 수 있습니다. (빌드 시스템 때문에 프로젝트 이름을 변경하는 것이 어리석은 것처럼 느껴지기 때문에 전환해야 할 충분한 이유가 있습니다.)

+1

'cmake'에 의해 "예약 된"것으로 보인다 - option_parser' 모듈이 예약되어 '것으로, 오류/경고가 당신이 생각하게? 그리고 "모듈"이란 무엇을 의미합니까? 'include ()'명령에 포함될 수있는 스크립트 ' .cmake'를 의미합니까? 또는 무엇을? – Tsyvarev

+0

내 자식 repo가 ​​$ HOME/foobar라고 가정 해 봅시다. 이 폴더에는 option_parser, unique_res 및 dyn_array와 같은 이름의 폴더가 있습니다. 각각은 독립형 라이브러리이지만 cmake를 통해 단일 라이브러리 바이너리 (여기서는 공유 여부는 상관 없음)로 모두 컴파일하고 싶습니다. 구조는 항상 동일합니다. ./tests, ./include/$(pwd) 및 ./src. 그래서 저는 그것들을 모듈이라고 부릅니다. 정확한 오류는 "대상 이름"./option_parser "는 예약되었거나 생성기 식과 같은 특정 CMake 기능에 유효하지 않으므로 정의되지 않은 동작이 발생할 수 있습니다." – user3459474

+1

그래서, 모듈 이름 *'option_parser'가 아니고 예약 된 ** 타겟 이름 **'./option_parser'입니다. 그렇지 않습니까? 점 ('.) '을 포함하는 * 목표 이름 *을 사용하지 마십시오. 일반적으로 대상 이름은 구두점 및 기타 특수 문자가 포함되지 않은 ** 식별 자 ** 여야합니다. – Tsyvarev

답변

0

정말 간단합니다. 모든 예약어를 보려면 다음 세 가지 명령을 사용하여

cmake --help-command-list 
cmake --help-variable-list 
cmake --help-property-list