1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
|
if(NOT PostgreSQL_INCLUDE_DIRS)
find_package(PostgreSQL REQUIRED)
endif()
# When setting up the include paths, mention the binary tree's include
# directory *before* the source tree's include directory. If the source tree
# happens to contain autoconf-generated config headers, we should still prefer
# the ones in the binary tree.
macro(library_target_setup tgt)
target_include_directories(${tgt}
PUBLIC
$<BUILD_INTERFACE:${PROJECT_BINARY_DIR}/include>
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/include>
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>
PRIVATE
${PostgreSQL_INCLUDE_DIRS}
)
target_link_libraries(${tgt} PRIVATE ${PostgreSQL_LIBRARIES})
if(WIN32)
target_link_libraries(${tgt} PUBLIC wsock32 ws2_32)
endif()
install(TARGETS ${tgt} EXPORT libpqxx-targets
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
)
endmacro()
# TODO: We're giving exact filenames here. Don't pretend they're globs.
file(
GLOB CXX_SOURCES
###MAKTEMPLATE:FOREACH src/*.cxx
###BASENAME###.cxx
###MAKTEMPLATE:ENDFOREACH
)
if(NOT SKIP_PQXX_SHARED)
set(CXX_SHARED_EXTRA_SOURCE)
if(WIN32)
# Add extra source
list(APPEND CXX_SHARED_EXTRA_SOURCE "${PROJECT_SOURCE_DIR}/win32/libpqxx.cxx")
endif()
# Build a shared library
add_library(pqxx_shared SHARED ${CXX_SOURCES} ${CXX_SHARED_EXTRA_SOURCE})
target_compile_definitions(pqxx_shared PUBLIC -DPQXX_SHARED)
set_target_properties(pqxx_shared PROPERTIES OUTPUT_NAME pqxx)
library_target_setup(pqxx_shared)
endif()
if(NOT SKIP_PQXX_STATIC)
# Build a static libary
add_library(pqxx_static STATIC ${CXX_SOURCES})
set_target_properties(pqxx_static PROPERTIES OUTPUT_NAME pqxx)
library_target_setup(pqxx_static)
endif()
|