Сборка с 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. Загрузите эти пакеты:
Следующий:
- проверить пакет: md5sum -c libpqxx-4.0.1.tar.gz.md5sum
- Если все в порядке: tar -xzvf libpqxx-4.0.1.tar.gz
- cd libpqxx-4.0.1
- ./configure --prefix = / usr / local --enable-shared
Вы можете выбрать путь, отличный от "/ usr / local". Там будет установлен libpqxx.
- очистить
- делать
- сделать установку
Теперь у вас должны быть заголовочные файлы в / usr / local / include и libpqxx.a, libpqxx.so в / usr / local / lib. Если все хорошо, свяжите библиотеки в IDE. Я не знаю, как это сделать в вашей IDE, но это, как правило, то же самое, но свойства находятся в разных местах. Например, в Eclipse CDT:
- В Project/properties/C\C++ Buid/ Настройки / Компилятор GCC C++ / Включает / включает в себя пути типа: /usr/local/include
- В GCC C++ Linker/ Библиотеки / Поиск пути к библиотеке: /usr/local/lib
- В GCC C++ Linker/ Библиотеки / Библиотеки введите: pqxx
- В проекте: #include
Теперь попробуйте скомпилировать. Если все в порядке, попробуйте запустить программу. Если у вас есть проблемы, как в посте № 15
error while loading shared libraries: libpqxx-4.0.so: cannot open shared object file: No such file or directory
- Перейдите в /etc/ld.so.conf.d/ и создайте там новый файл с именем libpqxx-4.0.1.conf, затем откройте файл и введите там тип / usr / local / lib
- После этого выполните команду ldconfig
В моем случае это было все, что нужно для связи с PostgreSQL с использованием libpqxx и C++11. Удачи.