The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Получить CMAKE_INSTALL_PREFIX в коде"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Программирование под UNIX (C/C++)
Изначальное сообщение [ Отслеживать ]

"Получить CMAKE_INSTALL_PREFIX в коде"  +/
Сообщение от dimonna email(ok) on 22-Сен-10, 14:07 
Всем привет!

Как получить строку в коде C++ из опции cmake говорящей ему куда ставить пакет?

Например, если я запускаю:

cmake CMAKE_INSTALL_PREFIX=/tmp ..

потом

make

то во время компиляции хочется каким-то образом получить const char* path со значением которое я передал через CMAKE_INSTALL_PREFIX, т.е. "/tmp"


Спасибо заранее,
Дмитрий

Высказать мнение | Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "как-то так"  +/
Сообщение от Вова on 22-Сен-10, 15:00 
#define QUOTE(x) _QUOTE(x)

#define _QUOTE(x) #x

#cmakedefine CMAKE_INSTALL_PREFIX QUOTE(${CMAKE_INSTALL_PREFIX})

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

4. "как-то так"  +/
Сообщение от dimonna email(ok) on 22-Сен-10, 16:06 
>#define QUOTE(x) _QUOTE(x)
>
>#define _QUOTE(x) #x
>
>#cmakedefine CMAKE_INSTALL_PREFIX QUOTE(${CMAKE_INSTALL_PREFIX})

Не понял, это надо прописать в CMakeLists.txt и тогда соответствующий макрос будет передан при компиляции?

Мне ведь надо не

char* c = "CMAKE_INSTALL_PREFIX";

а

char* c = "/tmp"

если я делаю CMAKE_INSTALL_PREFIX=tmp

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

5. "как-то так"  +/
Сообщение от Вова on 22-Сен-10, 16:30 
>>#define QUOTE(x) _QUOTE(x)
>>
>>#define _QUOTE(x) #x
>>
>>#cmakedefine CMAKE_INSTALL_PREFIX QUOTE(${CMAKE_INSTALL_PREFIX})
>
>Не понял, это надо прописать в CMakeLists.txt и тогда соответствующий макрос будет
>передан при компиляции?

нет, это всё в source.cc

в симейклисте:

include(CMakeMacroParseArguments)

configure_file(${CMAKE_SOURCE_DIR}/source.cc ${CMAKE_BINARY_DIR}/source.cc)

может быть, есть и более удобный вариант, я не фанат симейка, если что.

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

6. "как-то так"  +/
Сообщение от dimonna email(ok) on 22-Сен-10, 17:14 
>[оверквотинг удален]
>нет, это всё в source.cc
>
>в симейклисте:
>
>include(CMakeMacroParseArguments)
>
>configure_file(${CMAKE_SOURCE_DIR}/source.cc ${CMAKE_BINARY_DIR}/source.cc)
>
>может быть, есть и более удобный вариант, я не фанат симейка, если
>что.

Да, пожалуй придется заюзать таки config.h

Спасибо всем откликнувшимся!!!

Тема закрыта.
Дмитрий


Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

2. "Получить CMAKE_INSTALL_PREFIX в коде"  +/
Сообщение от phpcoder email(ok) on 22-Сен-10, 15:37 
В Autotools это обычно решается с помощью config.h файла, который создаётся configure скриптом и в котором все подобные значения за-define-нены. Думаю, что и в CMake можно также поступить. Либо просто пробросить в приложение через опцию -D у компилятора.

(Другой вопрос, что по-хорошему приложению должно быть фиолетово куда его установили и подобные вопросы не должны возникать.)


Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

3. "Получить CMAKE_INSTALL_PREFIX в коде"  +/
Сообщение от Вова on 22-Сен-10, 16:01 
>(Другой вопрос, что по-хорошему приложению должно быть фиолетово куда его установили и
>подобные вопросы не должны возникать.)

gcc и qt - нехорошее приложение и плохой тулкит?

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

7. "Получить CMAKE_INSTALL_PREFIX в коде"  +/
Сообщение от аноним on 24-Сен-10, 13:27 
ADD_DEFINITIONS(-DCMAKE_INSTALL_PREFIX="${CMAKE_INSTALL_PREFIX}")

возможно, нужно будет несколько слешей перед кавычками.

config.h для одной строки - оверкилл, не уподобляйтесь autocrap'у.

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

8. "Получить CMAKE_INSTALL_PREFIX в коде"  +/
Сообщение от dimonna (??) on 24-Сен-10, 19:39 
>ADD_DEFINITIONS(-DCMAKE_INSTALL_PREFIX="${CMAKE_INSTALL_PREFIX}")
>
>возможно, нужно будет несколько слешей перед кавычками.
>
>config.h для одной строки - оверкилл, не уподобляйтесь autocrap'у.

А как потом его значение получить в виде строки в коде?

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

9. "Получить CMAKE_INSTALL_PREFIX в коде"  +/
Сообщение от phpcoder email(ok) on 24-Сен-10, 21:11 
>>ADD_DEFINITIONS(-DCMAKE_INSTALL_PREFIX="${CMAKE_INSTALL_PREFIX}")
>>
>>возможно, нужно будет несколько слешей перед кавычками.
>>
>>config.h для одной строки - оверкилл, не уподобляйтесь autocrap'у.
>
>А как потом его значение получить в виде строки в коде?

const char * const prefix = CMAKE_INSTALL_PREFIX;


Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

10. "Получить CMAKE_INSTALL_PREFIX в коде"  +/
Сообщение от dimonna (??) on 24-Сен-10, 21:21 
>>>ADD_DEFINITIONS(-DCMAKE_INSTALL_PREFIX="${CMAKE_INSTALL_PREFIX}")
>>>
>>>возможно, нужно будет несколько слешей перед кавычками.
>>>
>>>config.h для одной строки - оверкилл, не уподобляйтесь autocrap'у.
>>
>>А как потом его значение получить в виде строки в коде?
>
>const char * const prefix = CMAKE_INSTALL_PREFIX;

Ага, и получите

const char* const prefix = /folder/folder;

вместе с ошибкой компиляции :)

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру