File: CMakeLists.txt.template

package info (click to toggle)
libpqxx 6.4.5-2
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 3,992 kB
  • sloc: cpp: 12,634; sh: 4,426; xml: 1,104; makefile: 309; python: 294; ansic: 3
file content (56 lines) | stat: -rw-r--r-- 1,901 bytes parent folder | download
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()