aboutsummaryrefslogtreecommitdiff
path: root/ports/quickfast/CMakeLists.txt
blob: 2464b6a25d98d1086157c8ffa9c854dbedfc6ddb (plain)
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
cmake_minimum_required(VERSION 3.13)
project(quickfast CXX)

option(BUILD_SHARED_LIBS "Build shared instead of static library" ON)

find_package(Boost REQUIRED COMPONENTS thread)
find_package(XercesC REQUIRED)

file(GLOB SOURCES 
	quickfast/Application/*.cpp
	quickfast/Common/*.cpp
	quickfast/Codecs/*.cpp
	quickfast/Communication/*.cpp
	quickfast/Messages/*.cpp
)

file(GLOB HEADERS RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}
	quickfast/Application/*.h
	quickfast/Common/*.h
	quickfast/Codecs/*.h
	quickfast/Communication/*.h
	quickfast/Messages/*.h
)

if(BUILD_SHARED_LIBS)
	add_library(quickfast SHARED ${HEADERS} ${SOURCES})
	target_compile_definitions(quickfast PRIVATE -DQUICKFAST_BUILD_DLL)
else()
	add_library(quickfast STATIC ${HEADERS} ${SOURCES})
	target_compile_definitions(quickfast PUBLIC -DQUICKFAST_HAS_DLL=0)
endif()

target_include_directories(quickfast PUBLIC
	$<INSTALL_INTERFACE:include>
	$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
	$<BUILD_INTERFACE:${Boost_INCLUDE_DIRS}>
)

target_link_libraries(quickfast PRIVATE
	${Boost_LIBRARIES} 
	XercesC::XercesC
)

install(TARGETS quickfast EXPORT quickfast-config 
    RUNTIME DESTINATION bin
    ARCHIVE DESTINATION lib
    LIBRARY DESTINATION lib
)
install(EXPORT quickfast-config DESTINATION share/cmake/quickfast)

foreach (HEADER ${HEADERS} )
    get_filename_component(HEADER_DIR ${HEADER} DIRECTORY)
    install(FILES ${HEADER} DESTINATION include/${HEADER_DIR})
endforeach()