2013-06-20 4 views
1

Я хочу превратить содержимое файла в аргумент. Аргумент относится к исполняемому файлу, который тестируется. Это то, что у меня естьКак я могу запустить команду внутри команды в CMake Macro

ADD_TEST (
    NAME ${ARGV0} 
    COMMAND 
     ${DIR}/script.sh 
     ${executable}\ --arg1\ input 
) 

Я хочу поместить аргументы в файл и передать его исполняемому файлу в качестве ввода. Я хочу что-то вроде этого:

ADD_TEST (
    NAME ${ARGV0} 
    COMMAND 
     ${DIR}/script.sh 
     ${executable}\ $(cat ${ARGS_file}) 
) 

Или как этот

ADD_TEST (
    NAME ${ARGV0} 
    COMMAND 
     ${DIR}/script.sh 
     ${executable}\ `cat ${ARGS_file}` 
) 

Или как этот

ADD_TEST (
    NAME ${ARGV0} 
    COMMAND 
     ${DIR}/script.sh 
     ${executable}\ $(< ${ARGS_file}) 
) 

Ни один из этих трех кодов работает. Когда я пытаюсь использовать их вне CMake, они отлично работают. но внутри CMake они не работают.

+1

CMake не использует оболочку для оценки аргументов. Если вам нужно это поведение, и вы уверены, что работаете только с Linux, вы можете попробовать что-то вроде этого: COMMAND bash -c "$ {executable} $ (cat $ {ARGS_file})" Нравится программа? снова передается в bash. – languitar

ответ

0

Для более общего подхода используйте execute_command, file(WRITE <path> <contents>), а затем include(<path>).

Смежные вопросы