Сборка с libpqxx в C++11 на Kdevelop

Я пытаюсь создать программу на C++, которая нуждается в функциях lipqxx. Я на Ubuntu и пытаюсь использовать Kdevelop.

Я сделал это успешно с Code::Blocks, но я пытаюсь найти лучшую IDE.

Теперь, что я сделал с Kdevelop. Я создал простой пример:

#include <pqxx/pqxx>

int main(int argc, char **argv) {
    pqxx::connection c("dbname=xx host=localhost user=xx password=xx");
    return 0;
}

Я изменил CmakeList.txt, чтобы включить каталог pqxx и связать его с libpqxx.so:

cmake_minimum_required(VERSION 2.6)
project(testkdev)

include_directories ("/usr/include/pqxx")

LINK_DIRECTORIES("/usr/lib")

add_executable(testkdev main.cpp)
TARGET_LINK_LIBRARIES(testkdev libpqxx.so)

install(TARGETS testkdev RUNTIME DESTINATION bin)

На данный момент процесс сборки работает.

Но мне нужно сделать что-то еще, я хочу работать в C++11. Поэтому я добавляю опцию -std= C++ 11, щелкая правой кнопкой мыши по моему проекту, откройте Конфигурация> Cmake > Расширенные значения> CMAKE_CXX_FLAGS.

И я получаю следующие ошибки:

/home/francis/projects/testKDEV/build> make -j2
[100%] Building CXX object CMakeFiles/testkdev.dir/main.cpp.o
In file included from /usr/include/c++/4.9/memory:79:0,
                 from /usr/include/c++/4.9/tr1/memory:39,
                 from /usr/include/pqxx/util.hxx:31,
                 from /usr/include/pqxx/util:18,
                 from /usr/include/pqxx/except.hxx:27,
                 from /usr/include/pqxx/except:19,
                 from /usr/include/pqxx/result.hxx:33,
                 from /usr/include/pqxx/result:19,
                 from /usr/include/pqxx/binarystring.hxx:26,
                 from /usr/include/pqxx/binarystring:18,
                 from /usr/include/pqxx/pqxx:17,
                 from /home/francis/projects/testKDEV/main.cpp:2:
/usr/include/c++/4.9/functional:1034:20: error: expected template-name before ‘<’ token
     : tuple_element<__i, _Tuple> { };
                    ^
/usr/include/c++/4.9/functional:1034:20: error: expected ‘{’ before ‘<’ token
/usr/include/c++/4.9/functional:1034:20: error: expected unqualified-id before ‘<’ token
/usr/include/c++/4.9/functional:1054:17: error: ‘tuple_size’ was not declared in this scope
          (__i < tuple_size<_Tuple>::value)>
                 ^
/usr/include/c++/4.9/functional:1054:35: error: ‘::value’ has not been declared
          (__i < tuple_size<_Tuple>::value)>

и это продолжается и продолжается с ошибками... Может ли кто-нибудь помочь мне понять, что я делаю неправильно?

1 ответ

Я не знаю Kdevelop, но у меня была похожая проблема. Я использую Eclipse. Есть мой вопрос и ответ. Это на польском языке, так что найдите кого-то, кто может перевести это. Мой английский не слишком хорош, но я буду переступать так хорошо, как могу.

Мой вопрос (forum.dobreprogramy.pl)

Вам нужна libpqxx-4.0.1. Загрузите эти пакеты:

Следующий:

  1. проверить пакет: md5sum -c libpqxx-4.0.1.tar.gz.md5sum
  2. Если все в порядке: tar -xzvf libpqxx-4.0.1.tar.gz
  3. cd libpqxx-4.0.1
  4. ./configure --prefix = / usr / local --enable-shared

Вы можете выбрать путь, отличный от "/ usr / local". Там будет установлен libpqxx.

  1. очистить
  2. делать
  3. сделать установку

Теперь у вас должны быть заголовочные файлы в / usr / local / include и libpqxx.a, libpqxx.so в / usr / local / lib. Если все хорошо, свяжите библиотеки в IDE. Я не знаю, как это сделать в вашей IDE, но это, как правило, то же самое, но свойства находятся в разных местах. Например, в Eclipse CDT:

  1. В Project/properties/C\C++ Buid/ Настройки / Компилятор GCC C++ / Включает / включает в себя пути типа: /usr/local/include
  2. В GCC C++ Linker/ Библиотеки / Поиск пути к библиотеке: /usr/local/lib
  3. В GCC C++ Linker/ Библиотеки / Библиотеки введите: pqxx
  4. В проекте: #include

Теперь попробуйте скомпилировать. Если все в порядке, попробуйте запустить программу. Если у вас есть проблемы, как в посте № 15

error while loading shared libraries: libpqxx-4.0.so: cannot open shared object file: No such file or directory
  1. Перейдите в /etc/ld.so.conf.d/ и создайте там новый файл с именем libpqxx-4.0.1.conf, затем откройте файл и введите там тип / usr / local / lib
  2. После этого выполните команду ldconfig

В моем случае это было все, что нужно для связи с PostgreSQL с использованием libpqxx и C++11. Удачи.

Другие вопросы по тегам