2013-01-07 6 views
2

프로젝트에 CMakeLists.txt를 쓰고 있는데 set_source_files_properties에 문제가 있습니다.cmake의 set_source_files_properties를 사용하여 하나의 파일에 여러 속성을 적용하는 방법은 무엇입니까?

원래 작업 식입니다 :

set_source_files_properties (a.cpp PROPERTIES COMPILE_DEFINITIONS 
    DIR1="/home/xxx/b.i") 

가 그럼 난 더 COMPILE_DEFINITIONSs을 추가 할 수 있지만 실패를 얻을하려고합니다.

1 시도 :

set_source_files_properties (a.cpp PROPERTIES COMPILE_DEFINITIONS 
    DIR1="/home/xxx/b.i" DIR2="/home/xxx/c.i" DIR3="/home/xxx/d.i") 

2를 시도 :

set_source_files_properties (a.cpp PROPERTIES COMPILE_DEFINITIONS 
    DIR1="/home/xxx/b.i") 
set_source_files_properties (a.cpp PROPERTIES COMPILE_DEFINITIONS 
    DIR2="/home/xxx/c.i") 
set_source_files_properties (a.cpp PROPERTIES COMPILE_DEFINITIONS 
    DIR3="/home/xxx/d.i") 

결과 : 은 지난 수 있도록하여 컴파일 할 때 DIR3이 a.cpp에서 인식 할 수있는 정의, 처음 두 메이크업에 정의되지 않은보고 단계.

제안 사항?

감사합니다.

+0

문제가 해결되었습니다. add_definitions (-DDIR1 = "a") add_definitions (-DDIR2 = "b") add_definitions (-DDIR3 = "c") – jxj

답변

8

set_*_properties() 함수는 기본 사용법의 약자입니다. "고급"경우에, 그것은 set_property()의 모든 기능을 사용하는 것이 좋습니다 : 나는 다음과 같은 명령을 set_source_files_properties을 사용하여 여러 COMPILE_DEFINITIONS를 제공하기 위해 관리

add_definitions (-DDIR1="/home/xxx/b.i") 
add_definitions (-DDIR2="/home/xxx/C.i") 
add_definitions (-DDIR3="/home/xxx/D.i") 
+0

안녕하세요. 하지만 cmake 단계에서 오류가 발생했습니다 : 소스/lte/turbo/CMakeLists.txt의 CMake 오류 : 31 (set_property) : set_property의 TurboOcl 범위가 잘못되었습니다. 유효한 범위는 GLOBAL, DIRECTORY, TARGET, SOURCE, TEST, CACHE입니다. – jxj

+1

'SOURCE' 키워드가 누락 되었어야합니다. – Angew

+1

좋은 답변입니다! 'set_source_files_properties'가 약속 한 것을 전달하지 못하는 이유를 명확히 알지 못합니다 ... – Antonio

-3

문제가 해결되었습니다

set_source_files_properties (a.cpp PROPERTIES COMPILE_DEFINITIONS 
    "DIR1=\"/home/xxx/b.i\";DIR2=\"/home/xxx/c.i\";DIR3=\"/home/xxx/d.i\")" 

소스 : https://cmake.org/cmake/help/v3.5/prop_sf/COMPILE_DEFINITIONS.html

+4

그것은 당신에게 효과적 일지는 모르겠지만, 앞으로의 독자들을 위해서, 당신이 요청한 것을하지 않는다고 덧붙일 것입니다. 'a.cpp'뿐만 아니라 프로젝트의 모든 * 파일에 정의를 추가합니다. – Angew

2

:

set_property(
    SOURCE a.cpp 
    APPEND 
    PROPERTY COMPILE_DEFINITIONS 
    DIR1="/home/xxx/b.i" DIR2="/home/xxx/c.i" DIR3="/home/xxx/d.i" 
) 
관련 문제