2015-02-02 2 views
0

target_compile_options 함수에 대한 인수와 같이 원래의 값인 CMAKE_CXX_FLAGS을 모두 전달하려고합니다.CMAKE_CXX_FLAGS를 target_compile_options에 전달하십시오.

CMakeLists.txt

set(CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS} -std=c++0x -Wall -pedantic -Werror -Wextra) 

# I'd wish this target_compile_options 
target_compile_options(my_target INTERFACE ${CMAKE_CXX_FLAGS}) 

이 나에게 오류 제공 :

g++.exe: error: -std=c++0x -Wall -pedantic -Werror -Wextra: No such file or directory 

내가 간단한 해결책은 알고

target_compile_options(my_target INTERFACE -std=c++0x -Wall -pedantic -Werror -Wextra) 

하지만 유지하려는 것을 원래 SET(CMAKE_CXX_FLAGS ...), 가능하겠습니까?

미리 감사드립니다.

이 때문에 CMAKE_CXX_FLAGS가 (파라미터 공간에 의해 분리된다) target_compile_optionslist (파라미터 세미콜론으로 분리되어있다)을 사용하면서 하나의 문자열을 사실 아마도

답변

5

. 모두 설정 CMAKE_CXX_FLAGS을 설정하려면 현실 세계에서, 당신이 원하는하지 않을 것이라고

# this will probably break if you omit the "s 
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x -Wall -pedantic -Werror -Wextra") 

string(REPLACE " " ";" REPLACED_FLAGS ${CMAKE_CXX_FLAGS}) 
target_compile_options(my_target INTERFACE ${REPLACED_FLAGS}) 

참고 :

빠른 해킹으로, 당신은 string 명령을 사용하여 세미콜론으로 모든 공간을 분리 시도 할 수 target_compile_options 동시에. 한 접근법을 고수해야한다. (내 경험상 target_compile_options은 장기적으로 문제를 일으킬 가능성이 적다.) 정확한 문자열 분리 기호를 사용한다.

+0

작동합니다! 고마워요! 나는 그것을 알고 있고 그들은 다른 프로젝트에 있지만이 질문은 내 마음에 왔고 나는 그것을 해결하려고 노력하는 것을 도울 수 없었다. – fenix688