Last active
February 11, 2024 04:33
-
-
Save Fat83dotcom/d67ef7b4c8ad948df11e637e416eeaa7 to your computer and use it in GitHub Desktop.
Configuração de um CMakeLists.txt para compilar a biblioteca C++ PQXX (versão 7.6.2) no Ubuntu 22.04 - PostgreSQL
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#-- Esta versão da lib somente suporta c++20 ou superior | |
cmake_minimum_required(VERSION 3.0.0) | |
project(nome_do_projeto_cmake VERSION 0.1.0 LANGUAGES C CXX) | |
#-- Adiciona o caminho para o arquivo FindPQXX.cmake | |
list(APPEND CMAKE_MODULE_PATH "caminho para o arquivo FindPQXX.cmake") | |
#-- Seta flags para o compilador | |
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++20 -lpqxx -lpq -lfmt") | |
set(CMAKE_CXX_STANDARD 20) | |
set(CMAKE_CXX_STANDARD_REQUIRED ON) | |
include(CTest) | |
enable_testing() | |
add_executable(nome_do_projeto_cmake main.cpp) | |
#-- Parteresponsavel pela lib pqxx | |
find_package(PostgreSQL REQUIRED) | |
include_directories(${PostgreSQL_INCLUDE_DIRS}) | |
link_directories(${PostgreSQL_LIBRARY_DIRS}) | |
#-- Vincula a biblioteca na compilação | |
find_package(PQXX REQUIRED) | |
target_include_directories(nome_do_projeto_cmake PUBLIC ${PQXX_INCLUDE_DIRS}) | |
target_link_libraries(nome_do_projeto_cmake ${PQXX_LIBRARIES}) | |
set(CPACK_PROJECT_NAME ${PROJECT_NAME}) | |
set(CPACK_PROJECT_VERSION ${PROJECT_VERSION}) | |
include(CPack) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#[=======================================================================[.rst: | |
FindPQXX | |
----------------------------- | |
Find PostGreSQL C++ library and header file | |
Sets | |
PQXX_FOUND to 0 or 1 depending on result | |
PQXX_INCLUDE_DIR to the pqxx include path | |
PQXX_INCLUDE_DIRECTORIES to the pqxx include path | |
PQXX_LIBRARY to the pqxx client library | |
PQXX_LIBRARIES to the pqxx client library and required dependencies | |
Sample Usage: | |
find_package(PQXX) | |
find_package(PQXX 6.3) | |
#]=======================================================================] | |
include(FindPackageHandleStandardArgs) | |
set(PostgreSQL_TYPE_INCLUDE_DIR /usr/include/postgresql) | |
if(PQXX_FIND_REQUIRED) | |
find_package( PostgreSQL REQUIRED ) | |
else() | |
find_package( PostgreSQL ) | |
endif() | |
if ( PostgreSQL_FOUND ) | |
file( TO_CMAKE_PATH "$ENV{PQXX_DIR}" _PQXX_DIR ) | |
find_library( PQXX_LIBRARY | |
NAMES libpqxx pqxx | |
HINTS ENV PQXX_DIR | |
PATHS | |
${_PQXX_DIR}/lib | |
${CMAKE_INSTALL_PREFIX}/lib | |
${CMAKE_INSTALL_PREFIX}/bin | |
/usr/local/pgsql/lib | |
/usr/local/lib | |
/usr/lib | |
PATH_SUFFIXES ${CMAKE_LIBRARY_ARCHITECTURE} | |
DOC "Location of libpqxx library" | |
NO_DEFAULT_PATH | |
) | |
find_path( PQXX_INCLUDE_DIR | |
NAMES pqxx | |
HINTS ENV PQXX_DIR | |
PATHS | |
${_PQXX_DIR}/include | |
${CMAKE_INSTALL_PREFIX}/include | |
/usr/local/pgsql/include | |
/usr/local/include | |
/usr/include | |
DOC "Path to pqxx/pqxx header file. Do not include the 'pqxx' directory in this value." | |
NO_DEFAULT_PATH | |
) | |
endif ( PostgreSQL_FOUND ) | |
if( PQXX_INCLUDE_DIR ) | |
file(STRINGS ${PQXX_INCLUDE_DIR}/pqxx/version.hxx PQXX_VERSION_DEFINE REGEX "PQXX_VERSION ") | |
string(REGEX MATCH "[0-9]+.[0-9]+.[0-9]+" PQXX_VERSION ${PQXX_VERSION_DEFINE}) | |
else() | |
set(PQXX_VERSION "") | |
endif() | |
find_package_handle_standard_args(PQXX REQUIRED_VARS PQXX_LIBRARY PQXX_INCLUDE_DIR | |
VERSION_VAR PQXX_VERSION) | |
set( PQXX_INCLUDE_DIRECTORIES "${PQXX_INCLUDE_DIR};${PostgreSQL_INCLUDE_DIR}" CACHE STRING "Include directories for PostGreSQL C++ library" FORCE ) | |
set( PQXX_LIBRARIES "${PQXX_LIBRARY};${PostgreSQL_LIBRARY}" CACHE STRING "Link libraries for PostGreSQL C++ interface" FORCE ) | |
mark_as_advanced(FORCE PQXX_INCLUDE_DIRECTORIES) | |
mark_as_advanced(FORCE PQXX_LIBRARIES) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment