Russian Qt Forum
Сентябрь 30, 2024, 22:20 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: cmake запросы о пакетах  (Прочитано 6869 раз)
virtual_root
Гость
« : Сентябрь 25, 2012, 15:17 »

Доброго времени суток. Изучаю cmake и мне нужна ваша помощь. Ребята подскажите, пожалуйста, какой функцией проверить установлен тот или иной пакет(Linux)/программа(windows) в системе? Знаю что есть в cmake способ это проверить, ну что-то никак не могу найти как..
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #1 : Сентябрь 25, 2012, 15:19 »

http://www.cmake.org/cmake/help/v2.8.9/cmake.html#module:FindQt4
И остальные вида Find*.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
virtual_root
Гость
« Ответ #2 : Сентябрь 25, 2012, 15:26 »

спасибо! а в qmake функция packagesExist(packages) не сможет выполнить ли тоже самое?
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #3 : Сентябрь 25, 2012, 15:40 »

спасибо! а в qmake функция packagesExist(packages) не сможет выполнить ли тоже самое?
С qmake не работаю уже очень давно, так что, жди других комментаторов.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
virtual_root
Гость
« Ответ #4 : Сентябрь 26, 2012, 10:17 »

у меня что-то не получается проверить наличие установленного пакета.. Пожалуйста подскажите, что я делаю не так:
Код:
cmake_minimum_required (VERSION 2.6)

set (PROJECT hello_world)

project (${PROJECT})

set (SOURCES hello.cpp)

find_package(postgresql,REQUIRED)

SET(CMAKE_INSTALL_PREFIX bin)

add_executable (${PROJECT} ${SOURCES})

install(TARGETS ${PROJECT}  DESTINATION .)

мне нужно проверить установлен ли postgresql. Он у меня установлен, но при выполнении команды cmake ./
я получаю следующий вывод:
Код:
cmake ./
-- 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
CMake Warning at CMakeLists.txt:9 (find_package):
  Could not find module Findpostgresql,REQUIRED.cmake or a configuration file
  for package postgresql,REQUIRED.

  Adjust CMAKE_MODULE_PATH to find Findpostgresql,REQUIRED.cmake or set
  postgresql,REQUIRED_DIR to the directory containing a CMake configuration
  file for postgresql,REQUIRED.  The file will have one of the following
  names:

    postgresql,REQUIREDConfig.cmake
    postgresql,required-config.cmake



-- Configuring done
-- Generating done
-- Build files have been written to: /home/urivskay/cmake
в выводе написано что он не смог найти пакет postgresql. Я проверяла командой sudo dpkg –get-selections
список установленных программ, чтобы проверить название установленного пакета, он так и называется postgresql.
Проверяла и на машине где не установлен postgresql вывод тот же самый...
У меня ещё вопрос, как мне так сделать чтобы если пакет не найден то файлы сборки не сформировались?
Записан
virtual_root
Гость
« Ответ #5 : Сентябрь 26, 2012, 10:26 »

нашла функцию find_program() , ну что-то не пойму чего ей не хватает в параметрах? У меня выдается сообщение что postgresql не установлен, хотя это не так! Ругается и на message...
Код:
set(PSQLPROG)
find_program(PSQLPROG postgresql)

if (NOT PSQLPROG)
message (FATAL_ERROR "postgresql not install")
endif(NOT PSQLPROG)

вывод cmake:
Код:
cmake ./
CMake Error at CMakeLists.txt:14 (message):
  postgresql not install


-- Configuring incomplete, errors occurred!
urivskay@urivskay-H61M-D2-B3:~/cmake$
« Последнее редактирование: Сентябрь 26, 2012, 10:38 от tiny developer » Записан
virtual_root
Гость
« Ответ #6 : Сентябрь 26, 2012, 11:46 »

решила проблему следующим образом:
Код:
cmake_minimum_required (VERSION 2.6)

set (PROJECT hello_world)

project (${PROJECT})

set (SOURCES hello.cpp)

set(PSQLPROG)

find_program(PSQLPROG postgres HINTS /usr/lib/postgresql/9.1/bin)

if (NOT PSQLPROG)
message (FATAL_ERROR "postgres not install")
endif(NOT PSQLPROG)

SET(CMAKE_INSTALL_PREFIX bin)

add_executable (${PROJECT} ${SOURCES})

install(TARGETS ${PROJECT}  DESTINATION .)

правда решение мне это совсем не нравится... буду ещё искать варианты)
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #7 : Сентябрь 26, 2012, 11:48 »

В /usr/bin лучше ищи.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #8 : Сентябрь 26, 2012, 11:49 »

Да, cmake предназначен для происка прог, которые нужны для сборки, а ты фигню порешь. Сказали же, оформляй в пакет и прописывай зависимости.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
vregess
Гость
« Ответ #9 : Сентябрь 27, 2012, 06:50 »

У тебя синтаксическая ошибка здесь (запятая не нужна):
Цитировать
find_package(postgresql,REQUIRED)

О чем и говорится:
Цитировать
Could not find module Findpostgresql,REQUIRED.cmake or a configuration file

Так должно заработать:
Цитировать
find_package(PostgreSQL REQUIRED)

Цитировать
У меня ещё вопрос, как мне так сделать чтобы если пакет не найден то файлы сборки не сформировались?
По идее, если что-то не найдено, то процесс конфигурирования будет прерван, также find_package() устанавливает переменную <package>_FOUND, если все ок.
На примере PostgreSQL:
Цитировать
find_package(PostgreSQL REQUIRED)

if (NOT PostgreSQL_FOUND)
  message(FATAL_ERROR "Can't find PostgreSQL")
endif()
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.047 секунд. Запросов: 23.