2017-04-13 1 views
0

나는 CMake에서 ExternalProject으로 부스트를 구축 중입니다. 나는 팔을 위해 교차하도록하고 싶다. 이렇게하려면 빌드 단계 전에 using gcc : arm : arm-linux-gnueabi ;을 user-config.jam에 쓰려고합니다.인쇄 방법; 기호 CMake 명령을 사용하여?

그러나, 거부로 보입니다.; 심볼을 인쇄합니다. 필자는 이것이 CMake가 명령을 쉘에 넘기는 것에 의한 mangling에 의한 것이라고 생각할 수 있습니다. 나는 sed을 사용하여 project-config.jam을 인라인으로 편집하려했지만 동일한 결과를 보았습니다. 이제 echo user-config.jam 줄을 시도하고 있습니다.

ExternalProject_Add(Boost 
    URL https://downloads.sourceforge.net/project/boost/boost/1.59.0/boost_1_59_0.tar.gz 
    SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/downloads/boost_1_59_0 
    BINARY_DIR ${CMAKE_CURRENT_SOURCE_DIR}/downloads/boost_1_59_0 
    UPDATE_COMMAND "" 
    PATCH_COMMAND "" 

    CONFIGURE_COMMAND ./bootstrap.sh --prefix="${CMAKE_BINARY_DIR}/boost_1_59_0" --without-icu 
    COMMAND echo using gcc : arm : arm-linux-gnueabi > ./user-config.jam 
    COMMAND echo ; >> ./user-config.jam 
    BUILD_COMMAND "./b2" 
    INSTALL_COMMAND ./b2 install toolset=gcc-arm --prefix=${CMAKE_CURRENT_SOURCE_DIR}/deps/boost 
    INSTALL_DIR ${CMAKE_CURRENT_SOURCE_DIR}/deps/boost 
) 

용장 CMake 인쇄 :

cd /home/matthew/Desktop/arm/downloads/boost_1_59_0 && echo using gcc : arm : arm-linux-gnueabi > ./user-config.jam 
cd /home/matthew/Desktop/arm/downloads/boost_1_59_0 && echo >> ./user-config.jam 

당신이 사용자 -하기 위해 사용 ... gnueabi 라인 벌금을 인쇄하는 것을 볼 수있다 여기에

은 CMakeLists.txt 내 ExternalProject 명령입니다 config.jam. 그러나 ;을 널 문자로 처리하는 것으로 보입니다. ; 문자 주위에 작은 따옴표와 큰 따옴표를 사용할 때도 똑같습니다.

답변

4

세미콜론은 cmake의 목록 구분 기호입니다. CMake 2.8.11 더 큰 특수 $ 토큰이 : 사이드 참고로

COMMAND echo $<SEMICOLON> >> ./user-config.jam 

을, 당신은 cmake -E <command>를 사용하여 cmake 구성보다 플랫폼 독립적으로 만들 수 있습니다

COMMAND ${CMAKE_COMMAND} -E echo ... 

그것은 아마 아무튼 ' 에코에 대한 문제, 다른 기능성 (디렉토리 생성/제거)에 대해 염두에 두어야 할 사항입니다.

+0

내가 지정해야합니다. 따옴표 (싱글과 더블)가 도움이되지 않습니다. –

+0

자세한 출력은 따옴표로 게시 한 것과 다릅니다. – jhauris

+0

COMMAND $ {CMAKE_COMMAND} -E echo ";" >> ./user-config.jam 이제 cd/home/matthew/Desktop/arm/downloads/boost_1_59_0 &&/usr/bin/cmake -E echo >> ./user-config.jam –

관련 문제