Название: Как прочитать TARGET из заголовочного файла? Отправлено: tux от Апрель 14, 2023, 00:37 Доброго времени суток!
Есть проект, в pro файле которого формируется довольно заковыристое имя исполнимого файла и помещается в TARGET. В этом же проекте есть файл hpp (или cpp, это не так уж и важно) в котором надо как то прочитать этот TARGET и использовать, например, в заголовке формы. Можно ли это сделать? Пробовал варианты типа $$TARGET, но так не работает. Название: Re: Как прочитать TARGET из заголовочного файла? Отправлено: Johnik от Апрель 14, 2023, 15:41 в *.pro
Код: DEFINES += "TARGET=$$TARGET" в *.cpp Код: #ifdef TARGET Название: Re: Как прочитать TARGET из заголовочного файла? Отправлено: kambala от Апрель 14, 2023, 17:42 а нельзя просто через
Код: DEFINES += "TARGET=\"$$TARGET\"" Название: Re: Как прочитать TARGET из заголовочного файла? Отправлено: tux от Апрель 14, 2023, 19:30 а нельзя просто через Определить то можно, проблема потом достать.Код: DEFINES += "TARGET=\"$$TARGET\"" Решение, предложенное Johnik вполне работает, спасибо! Хитрое решение. :) Название: Re: Как прочитать TARGET из заголовочного файла? Отправлено: kambala от Апрель 16, 2023, 10:17 не очень понял в чем проблема достать, если мы сразу в кавычки оборачиваем, а не через препроцессор
Название: Re: Как прочитать TARGET из заголовочного файла? Отправлено: Johnik от Апрель 16, 2023, 11:28 kambala, Вы пробовали или чисто теоретически? Я пробовал, там без разницы есть кавычки или нет, код чтоб достать значение, должен быть примерно таким, как я привел.
Название: Re: Как прочитать TARGET из заголовочного файла? Отправлено: kambala от Апрель 16, 2023, 15:56 теоретически :)
в общем случае компилятор без проблем передает кавычки, вероятно проблема в qmake. щас вот попробовал: надо вставлять кавычку как \\\", видимо первое экранирование для qmake, а второе — для шелла. Код: DEFINES += "TARGET=\\\"$$TARGET\\\"" Название: Re: Как прочитать TARGET из заголовочного файла? Отправлено: tux от Апрель 16, 2023, 16:48 kambala, так вы решите только часть исходной проблемы. Которую я и так уже решил, ещё в первом посте "Пробовал варианты типа $$TARGET". Но мне надо было получить этот TARGET в заголовочном файле (или cpp). А там как раз и не получалось - Johnik подсказал решение.
Название: Re: Как прочитать TARGET из заголовочного файла? Отправлено: Johnik от Апрель 16, 2023, 21:48 теоретически :) в общем случае компилятор без проблем передает кавычки, вероятно проблема в qmake. qmake не при чем он успешно скармливает компилю то, что указывается. вот при такой строке Код: DEFINES += "TARGET=\"$$TARGET\"" вызов компилятора выглядит так (чуть сократил): Код: cl -c -nologo -Zc:wchar_t -FS -Zc:rvalueCast -Zc:inline -Zc:strictStrings -Zc:throwingNew -Zc:referenceBinding -Zc:__cplusplus -Zi -MDd -W3 -EHsc /Fdtmp\obj\test_1.vc.pdb -DUNICODE -D_UNICODE -DWIN32 -DWIN64 -DTARGET="test_1" -DQT_FORCE_ASSERTS -DQT_CORE_LIB -IC:\sources\samples\src\test_1 -Fotmp\obj\ @C:\Users\Johnik\AppData\Local\Temp\main.obj.20924.15.jom среди всей этой строки можно увидеть: Код: -DTARGET="test_1" Название: Re: Как прочитать TARGET из заголовочного файла? Отправлено: kambala от Апрель 16, 2023, 21:59 речь шла о том как передать литеральные кавычки через DEFINES без необходимости GET_TARGET_IMPL трюков
Название: Re: Как прочитать TARGET из заголовочного файла? Отправлено: tux от Апрель 16, 2023, 22:43 речь шла о том как передать литеральные кавычки через DEFINES без необходимости GET_TARGET_IMPL трюков У вас есть другое решение задачи? Приведённые "трюки" работают и в cpp и в hpp файлах.Название: Re: Как прочитать TARGET из заголовочного файла? Отправлено: kambala от Апрель 16, 2023, 23:00 ну да, я ж его выше дал :)
щас вот попробовал: надо вставлять кавычку как \\\", видимо первое экранирование для qmake, а второе — для шелла. Код: DEFINES += "TARGET=\\\"$$TARGET\\\"" Название: Re: Как прочитать TARGET из заголовочного файла? Отправлено: tux от Апрель 16, 2023, 23:55 Кстати, да, так тоже работает. В винде пока не пробовал, завтра попробую.
P.S. В винде пробовал - всё работает. |