Модераторы: xvr
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Получить CMAKE_INSTALL_PREFIX в коде 
:(
    Опции темы
proc_maker
Дата 22.9.2010, 13:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 84
Регистрация: 11.11.2006

Репутация: 1
Всего: 1



Всем привет!

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

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

cmake CMAKE_INSTALL_PREFIX=/tmp ..

потом

make

то во время компиляции хочется каким-то образом получить 
Код

const char* path 
со значением которое я передал через CMAKE_INSTALL_PREFIX, т.е. 
Код

"/tmp"


Спасибо заранее,
Дмитрий
PM MAIL ICQ Skype   Вверх
RedDigger
Дата 25.9.2010, 01:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист



Профиль
Группа: Участник
Сообщений: 26
Регистрация: 24.9.2010
Где: Москва

Репутация: нет
Всего: 1



Цитата(proc_maker @ 22.9.2010,  13:05)
Всем привет!

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

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

cmake CMAKE_INSTALL_PREFIX=/tmp ..

потом

make

то во время компиляции хочется каким-то образом получить 
Код

const char* path 
со значением которое я передал через CMAKE_INSTALL_PREFIX, т.е. 
Код

"/tmp"


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

Решение делается через CMake
Вот пример решения - 
config.h.in
Код

#ifndef __CONFIG_H
#define __CONFIG_H

// This line will be parsed by cmake and replaced to install prefix of project
#define INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}"

#endif // __CONFIG_H


main.c
Код

// System includes
#include <stdio.h>

// Internal project includes
#include "config.h"

// Program Enter Point
int main(int argc, char** argv) {
        // Print our install prefix
        printf("%s\r\n", INSTALL_PREFIX);
        return 0;
}


CMakeLists.txt
Код

cmake_minimum_required(VERSION 2.6)

# project name
SET(PROJECT_NAME "test")

# configuration file
SET(CONFIG_FILE "config.h.in")

# Sources
SET(project_SOURCES main.c)

# this line will configure our config file and replace all CMAKE variables to correct ones
CONFIGURE_FILE(${CONFIG_FILE} config.h)

# we need to include BUILD directory for including just compiled config.h
INCLUDE_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR})

# compile our test
add_executable(${PROJECT_NAME} ${project_SOURCES})


Пример использования 
Код

/work/test # mkdir build 
/work/test # cd build/
/work/test/build # cmake .. -DCMAKE_INSTALL_PREFIX=/tmp
-- The C compiler identification is GNU
-- The CXX compiler identification is GNU
-- Check for working C compiler: /usr/bin/gcc
-- Check for working C compiler: /usr/bin/gcc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Configuring done
-- Generating done
-- Build files have been written to: /work/test/build
/work/test/build # make
Scanning dependencies of target test
[100%] Building C object CMakeFiles/test.dir/main.c.o                                                                                                                               
Linking C executable test                                                                                                                                                           
[100%] Built target test                                                                                                                                                            
/work/test/build # ./test 
/tmp



Надеюсь помог.

PM MAIL Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Программирование под Unix/Linux"
xvr
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой "Код".
  • Вопросы мобильной разработки тут
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, xvr.

 
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Программирование под Unix/Linux | Следующая тема »


 




[ Время генерации скрипта: 0.0577 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.