LINUX.ORG.RU

CMake, перенос длинных строк


0

0

Имеется длинная строка, которая не лезет в ширину экрана и её нужно
разнести на несколько строк.

Например:

MESSAGE(STATUS "Some very very very very very very long string.")

На C/C++ это бы выглядело так (чтобы было понятно чего я хочу):

MESSAGE(STATUS, "Some very very very very "
    "very very long string.");

Как сделать такое на языке CMake? Я уже по всякому пробовал - никак
не выходит =(.
Deleted

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

OH SHI-! /me мощно лоханулся =). Самое интересное то, что я так уже пробовал, и cmake ругался... а сейчас работает О_о.

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

>> Хи-хик:
>> MESSAGE(STATUS "Some very very very"
>> " very very very long string.")
>> работает нормально.

Оказывается это работает только потому, что MESSAGE может принимать
хоть сколько аргументов. Т.е. в данном случае ему передеются просто
две разные строки. Мне нужно на несолько строк разнести флаги
компиляции. Вариант 1:

SET(MY_CFLAGS
    "-f1 "
    "-f2 "
    "-f3")

В результате получаем строку "-f1 ;-f2 ;-f3" - не катит. Вариант 2:

SET(MY_CFLAGS
    "-f1
    -f2
    -f3")

В результате получаем строку "-f1\n    -f2\n    -f3" - не катит.
Вариант 3:

SET(MY_CFLAGS "-f1 ")
SET(MY_CFLAGS "${MY_CFLAGS} -f2 ")
SET(MY_CFLAGS "${MY_CFLAGS} -f3")

Работает как надо, но это громоздкий и неудобный костыль.

Что делать?

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

>> Закопать cmake и юзать scons.

Когда я последний раз смотрел scons (месяцев 5 назад), он мало что умел сам. Этакий python-модуль для упрощения написания build-скриптов. В cmake и автолулзах уже очень мнго всего сделали разработчики. Но автолулзы мне не понравились тем, что они прибиты большими гвоздями к одному тулкиту (GNU) и у них ещё более ужасный синтаксис скриптов, чем у cmake =).

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

>> Unfortunately, seems like that's the only way.

Я уже написал небольшой макрос-костыль:

MACRO (setStr var)
	SET(${var} "")
	FOREACH (str ${ARGN})
		SET(${var} "${${var}}${str}")
	ENDFOREACH (str)
ENDMACRO (setStr)

Юзать так:

setStr(str
    "-f1 "
    "-f2 "
    "-f3")

Вроде работает как надо.

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