将 libpqxx 库添加到 cmake
Add libpqxx library to cmake
我正在处理我的 C++ 简单项目,我在 CMakelists.txt 中遇到了一个关键问题,我无法以错误的方式链接 libpqxx 库,我花了两天时间来解决这个问题。
我正在使用 C++ 2017,
cmake 版本 3.10,
OS ubuntu 16.04,
克里昂
这是我的 CMakelists.txt
cmake_minimum_required(VERSION 3.10)
project(myserver)
set(CMAKE_CXX_STANDARD 17)
find_package(Boost)
IF (Boost_FOUND)
include_directories(${Boost_INCLUDE_DIR})
endif()
link_directories(/usr/local/lib)
include_directories(/usr/local/include)
file(GLOB_RECURSE SOURCE_FILES "src/*.cpp")
add_executable(myserver ${SOURCE_FILES})
TARGET_LINK_LIBRARIES(myserver ${LIBRARIES})
提前致谢
我找到了解决方案。
cmake_minimum_required(VERSION 3.10)
project(myserver)
set(CMAKE_CXX_STANDARD 17)
find_package(Boost)
IF (Boost_FOUND)
include_directories(${Boost_INCLUDE_DIR})
endif()
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -lpqxx -lpq")
set(PQXX /usr/local/include/pqxx)
find_library(PQXX_LIB pqxx)
find_library(PQ_LIB pq)
file(GLOB_RECURSE SOURCE_FILES "src/*.cpp")
add_executable(myserver ${SOURCE_FILES})
TARGET_LINK_LIBRARIES(myserver ${PQXX_LIB} ${PQ_LIB})
谢谢
没有在 cmake 中构建 libpqxx 的带有 cmake 示例的 libpqxx
设置环境
1.安装 CMake
cd ~
wget https://github.com/Kitware/CMake/releases/download/v3.14.5/cmake-3.14.5.tar.gz
tar xf cmake-3.14.5.tar.gz
cd cmake-3.14.5
./bootstrap --parallel=10
make -j4
sudo make -j4 install
2。安装 libpqxx
cd ~
git clone https://github.com/jtv/libpqxx.git
./configure
make -j4
sudo make install
如何建造
mkdir build
cd build
cmake ..
cmake --build .
如何运行
./main
Opened database successfully: postgres
项目
CMakeLists.txt
cmake_minimum_required (VERSION 3.10)
project(example VERSION 1.0.0 LANGUAGES CXX)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)
add_executable(main main.cpp)
target_link_libraries(main -lpqxx -lpq)
main.cpp
#include <iostream>
#include <pqxx/pqxx>
using namespace std;
using namespace pqxx;
int main(int argc, char *argv[])
{
try
{
connection C("dbname = postgres user = postgres password = mysecretpassword \
hostaddr = 127.0.0.1 port = 5433");
if (C.is_open())
{
cout << "Opened database successfully: " << C.dbname() << endl;
}
else
{
cout << "Can't open database" << endl;
return 1;
}
}
catch (const std::exception &e)
{
cerr << e.what() << std::endl;
return 1;
}
}
libpqxx with cmake 示例,在 cmake 中构建 libpqxx
设置环境
1.安装 CMake
cd ~
wget https://github.com/Kitware/CMake/releases/download/v3.14.5/cmake-3.14.5.tar.gz
tar xf cmake-3.14.5.tar.gz
cd cmake-3.14.5
./bootstrap --parallel=10
make -j4
sudo make -j4 install
如何建造
mkdir build
cd build
cmake ..
cmake --build .
如何运行
./main
Opened database successfully: postgres
项目
CMakeLists.txt
include(FetchContent)
cmake_minimum_required (VERSION 3.10)
project(example VERSION 1.0.0 LANGUAGES CXX)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)
FetchContent_Declare(
libpqxx
GIT_REPOSITORY https://github.com/jtv/libpqxx.git
GIT_TAG a6b1d60e74c1427c8ac2324b85cd4a0dc2068332
)
set(PQXX_LIBRARIES pqxx_static)
FetchContent_MakeAvailable(libpqxx)
add_executable(main main.cpp)
target_link_libraries(main "${PQXX_LIBRARIES}")
main.cpp
#include <iostream>
#include <pqxx/pqxx>
using namespace std;
using namespace pqxx;
int main(int argc, char *argv[])
{
try
{
connection C("dbname = postgres user = postgres password = mysecretpassword \
hostaddr = 127.0.0.1 port = 5433");
if (C.is_open())
{
cout << "Opened database successfully: " << C.dbname() << endl;
}
else
{
cout << "Can't open database" << endl;
return 1;
}
}
catch (const std::exception &e)
{
cerr << e.what() << std::endl;
return 1;
}
}
我正在处理我的 C++ 简单项目,我在 CMakelists.txt 中遇到了一个关键问题,我无法以错误的方式链接 libpqxx 库,我花了两天时间来解决这个问题。 我正在使用 C++ 2017, cmake 版本 3.10, OS ubuntu 16.04, 克里昂 这是我的 CMakelists.txt
cmake_minimum_required(VERSION 3.10)
project(myserver)
set(CMAKE_CXX_STANDARD 17)
find_package(Boost)
IF (Boost_FOUND)
include_directories(${Boost_INCLUDE_DIR})
endif()
link_directories(/usr/local/lib)
include_directories(/usr/local/include)
file(GLOB_RECURSE SOURCE_FILES "src/*.cpp")
add_executable(myserver ${SOURCE_FILES})
TARGET_LINK_LIBRARIES(myserver ${LIBRARIES})
提前致谢
我找到了解决方案。
cmake_minimum_required(VERSION 3.10)
project(myserver)
set(CMAKE_CXX_STANDARD 17)
find_package(Boost)
IF (Boost_FOUND)
include_directories(${Boost_INCLUDE_DIR})
endif()
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -lpqxx -lpq")
set(PQXX /usr/local/include/pqxx)
find_library(PQXX_LIB pqxx)
find_library(PQ_LIB pq)
file(GLOB_RECURSE SOURCE_FILES "src/*.cpp")
add_executable(myserver ${SOURCE_FILES})
TARGET_LINK_LIBRARIES(myserver ${PQXX_LIB} ${PQ_LIB})
谢谢
没有在 cmake 中构建 libpqxx 的带有 cmake 示例的 libpqxx
设置环境
1.安装 CMake
cd ~
wget https://github.com/Kitware/CMake/releases/download/v3.14.5/cmake-3.14.5.tar.gz
tar xf cmake-3.14.5.tar.gz
cd cmake-3.14.5
./bootstrap --parallel=10
make -j4
sudo make -j4 install
2。安装 libpqxx
cd ~
git clone https://github.com/jtv/libpqxx.git
./configure
make -j4
sudo make install
如何建造
mkdir build
cd build
cmake ..
cmake --build .
如何运行
./main
Opened database successfully: postgres
项目
CMakeLists.txt
cmake_minimum_required (VERSION 3.10)
project(example VERSION 1.0.0 LANGUAGES CXX)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)
add_executable(main main.cpp)
target_link_libraries(main -lpqxx -lpq)
main.cpp
#include <iostream>
#include <pqxx/pqxx>
using namespace std;
using namespace pqxx;
int main(int argc, char *argv[])
{
try
{
connection C("dbname = postgres user = postgres password = mysecretpassword \
hostaddr = 127.0.0.1 port = 5433");
if (C.is_open())
{
cout << "Opened database successfully: " << C.dbname() << endl;
}
else
{
cout << "Can't open database" << endl;
return 1;
}
}
catch (const std::exception &e)
{
cerr << e.what() << std::endl;
return 1;
}
}
libpqxx with cmake 示例,在 cmake 中构建 libpqxx
设置环境
1.安装 CMake
cd ~
wget https://github.com/Kitware/CMake/releases/download/v3.14.5/cmake-3.14.5.tar.gz
tar xf cmake-3.14.5.tar.gz
cd cmake-3.14.5
./bootstrap --parallel=10
make -j4
sudo make -j4 install
如何建造
mkdir build
cd build
cmake ..
cmake --build .
如何运行
./main
Opened database successfully: postgres
项目
CMakeLists.txt
include(FetchContent)
cmake_minimum_required (VERSION 3.10)
project(example VERSION 1.0.0 LANGUAGES CXX)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)
FetchContent_Declare(
libpqxx
GIT_REPOSITORY https://github.com/jtv/libpqxx.git
GIT_TAG a6b1d60e74c1427c8ac2324b85cd4a0dc2068332
)
set(PQXX_LIBRARIES pqxx_static)
FetchContent_MakeAvailable(libpqxx)
add_executable(main main.cpp)
target_link_libraries(main "${PQXX_LIBRARIES}")
main.cpp
#include <iostream>
#include <pqxx/pqxx>
using namespace std;
using namespace pqxx;
int main(int argc, char *argv[])
{
try
{
connection C("dbname = postgres user = postgres password = mysecretpassword \
hostaddr = 127.0.0.1 port = 5433");
if (C.is_open())
{
cout << "Opened database successfully: " << C.dbname() << endl;
}
else
{
cout << "Can't open database" << endl;
return 1;
}
}
catch (const std::exception &e)
{
cerr << e.what() << std::endl;
return 1;
}
}