LINUX.ORG.RU

cmake conditions

 ,


0

1

Нужна помощь чтобы разобрать следующий код:

IF(BUILD_64_TARGET)
    SET(...)
ELSE(BUILD_64_TARGET)
    SET(...)
ENDIF(BUILD_64_TARGET)

Вызывается часть под ELSE. Не понимаю почему условия под IF и ELSE одинаковые. Благодарен за помощь.


Ответ на: комментарий от Deleted

Это типа пишется переменная в каждом месте но несет смысловую нагрузку в первом IF? Если условие не срабатывает то переходим в ELSE и не важно что у нас в скобках?

ECLIPSE
() автор топика

это устаревшая форма синтаксиса cmake. Сейчас так никто не пишет.

if(BUILD_64_TARGET)
    set(...)
else()
    set(...)
endif()
Deleted
()
Последнее исправление: Deleted (всего исправлений: 1)

В ELSE нет условия, это просто метка, помогающая понять, к какому IF-у оно относится

XMs ★★★★★
()
Ответ на: комментарий от XMs

оно стало необязательно с какой-то древней версии cmake, этого достаточно что бы так не писать :)

Deleted
()
Ответ на: комментарий от XMs

Оно не Deprecated. И это хорошо, т.к. сложные условия замучишься даже по выравниваниям отождествлять. А тут хоть метки есть... Странно, что даже qt-creator не выделяет блоки if в cmakelists.txt (хотя, вчера я офонарел, когда он мне после сохранения высветил ошибку; вот чем надо было сразу пользоваться, а не мучиться с mcedit, gedit и geany)!

anonymous
()

Это стандартный вариант синтаксиса - для наглядности. Помогает подобное только в определениях функций - глазу легче зацепиться за endfunction(my_func), чем за endfunction()

Makhno
()
Ответ на: комментарий от ECLIPSE

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

Альтернатива - держать скобки просто пустыми. В живых проектах с адекватным народом на борту, лично я предпочитаю второй вариант, а в кровавом, при пинпонге с индусами - таки первый. Опенсурс, кмк тот самый подвид кровавого энтерпрайза.

В общем и целом, я бы тебе порекомендовал почитать хотя бы доку по инструменту, которым ты решил пользоваться.

pon4ik ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.