2012-07-21 21 views
7

varsayalım Aşağıdaki CKağıt pasajı gibi: msg noktalı virgül gibi "msg1;msg2" içerenCKağıt: Nasıl çıktı noktalı virgül ile (;) ADD_CUSTOM_TARGET komut seçenekleri

MACRO(ADD_CUSTOM_TARGET_COMMAND tag OUTPUT file) 
    ADD_CUSTOM_TARGET(tag 
     ${ARGN} 
    ) 

    ADD_CUSTOM_TARGET(OUTPUT file 
     ${ARGN} 
    ) 
ENDMACRO() 

ADD_CUSTOM_TARGET_COMMAND(tag 
    OUTPUT file 
    COMMAND git tag -a -m "${msg}" 1.0.0 HEAD 
    VERBATIM 
) 

, o zaman gerçek komut genişletilir

için Bir sözdizimi hatasına neden olan
git -a -m "msg1" "msg2" 1.0.0. HEAD 

.

;'dan kurtulmak için \ kullanmayı denedim ama boşuna.

Ne yapmalıyım?

cevap

11

özel belirteç yoktur yazma daha iyi şekilde görmek beri 2.8.11 sürümü: $ <SEMICOLON> (http://www.cmake.org/cmake/help/v2.8.11/cmake.html#command:add_custom_command).

Böyle bulmak komutu için örneğin kullanabilirsiniz:

find /path/to/search -name some\*name \! -path excluded\*Pattern -exec ln -sf "{}" \; 

aşağıdaki şekilde: add_custom_command için separate_arguments ile VERBATIM parametre gerekli olmadığını

set(
    FIND_ARGUMENTS 
    "${SEARCH_PATH} -name some\\*name \\! -path exclued\\*Pattern -exec ln -sf {} \\$<SEMICOLON>" 
) 

separate_arguments(FIND_ARGUMENTS) 

add_custom_command(TARGET ${PROJECT} 
    POST_BUILD 
    COMMAND "find" ${FIND_ARGUMENTS} 
    WORKING_DIRECTORY ${WORKING_PATH} 
) 

Not.

0

CKağıt virgül kullanarak liste yönetir, böylece sadece dosya mesajı ve git tag -F file

+0

Doğru. :-) Fakat daha genel bir çözüm bulmak istiyorum. –

İlgili konular