2013-05-03 3 views
1

Можно ли использовать операторы if в одной команде в add_custom_target? Я придумалcmake add_custom_target не разрешит if-statements?

add_custom_target(target     
      if(linux) 
       message("Linux!") 
      endif() 
) 

но он терпит неудачу с:

/bin/sh: 1: Syntax error: word unexpected (expecting "then").

Когда я добавляю then в конце if(linux), он терпит неудачу с:

/bin/sh: 1: Syntax error: word unexpected (expecting ")")

Почему это не работает? Невозможно выполнить тесты в add_custom_target? Я намерен делать разные вещи в add_custom_target в зависимости от операционной системы. Я также думал об определении функции, вызываемой в add_custom_target, но это тоже не работает. Это приложение не позволит мне написать простой make, что также проблематично.

ответ

2

я решил мою проблему, переместив код в CMake-скрипта и вызов этого сценария в add_custom_target в режиме обработки скриптов CMake в: cmake -P

2

Вы должны использовать, если заявления за пределами ADD_CUSTOM_TARGET:

if(linux) 
    add_custom_target(target message("Linux!")) 
elseif(win32) 
    add_custom_target(target message("Windows!")) 
endif() 
+0

I пытался избежать этого, так как для Windows и Linux существует много кода. Неправильное копирование кода! –

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