Initial commit of example projects (except: example2-client).
[libt2n] / examples-codegen / example2 / CMakeLists.txt
CommitLineData
471f240f
KK
1# Project
2project(libt2n-example2)
3set(VERSION 0.1)
4set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}")
5
6# CMake
7set(CMAKE_COLOR_MAKEFILE ON)
8cmake_minimum_required(VERSION 2.6 FATAL_ERROR)
9
10# Source package generation
11set(CPACK_SOURCE_GENERATOR TGZ)
12set(CPACK_SOURCE_IGNORE_FILES "~$;\\\\.git;build;build-rpm")
13set(CPACK_SOURCE_PACKAGE_FILE_NAME "${PROJECT_NAME}-${VERSION}")
14
15# Find external packages
16include(FindPkgConfig)
17
18pkg_check_modules(LIBT2N REQUIRED libt2n>=0.2)
19include_directories(${LIBT2N_INCLUDE_DIRS})
20link_directories(${LIBT2N_LIBRARY_DIRS})
21
22include(CPack)
23
24# Setup libt2n
25# for each command group list the files to parse for LIBT2N_EXPORT
26set(default_GROUP
27 ${CMAKE_CURRENT_SOURCE_DIR}/default.cpp
28)
29# example of a command group using multiple cpp files
30set(other_GROUP
31 ${CMAKE_CURRENT_SOURCE_DIR}/other-1.cpp
32 ${CMAKE_CURRENT_SOURCE_DIR}/other-2.cpp
33)
34# headers declaring data types used as rpc arguments must be listed manually (???)
35# (in this example the class Foo)
36set(CPP_HEADERS
37 ${CMAKE_CURRENT_SOURCE_DIR}/foo.hxx
38)
39# include CMake snippet doing all the magic
40include(${CMAKE_SOURCE_DIR}/../cmake/Libt2n.cmake)
41# command groups are listed here (seperated by spaces)
42setup_libt2n(default other)
43
44# Sources
45# for each group build a client library from generated source file(s)
46# Note: the library name must match the group name
47set(libdefault_SOURCES
48 default_client.cpp
49)
50set(libother_SOURCES
51 other_client.cpp
52)
53# build an example server and client
54set(client_SOURCES
55 client.cpp
56)
57set(libt2n_example2_server_SOURCES
58 other_server.cpp
59 default_server.cpp
60 server.cpp
61 ${other_GROUP}
62 ${default_GROUP}
63)
64
65# Libraries
66add_library(libdefault STATIC ${libdefault_SOURCES})
67set_target_properties(libdefault PROPERTIES OUTPUT_NAME default)
68
69add_library(libother STATIC ${libother_SOURCES})
70set_target_properties(libother PROPERTIES OUTPUT_NAME other)
71
72# Executables
73# build server program
74add_executable(libt2n-example2-server ${libt2n_example2_server_SOURCES})
75
76# Dependencies
77target_link_libraries(libdefault ${LIBT2N_LIBRARIES})
78add_dependencies(libdefault default_codegen_done)
79
80target_link_libraries(libother ${LIBT2N_LIBRARIES})
81add_dependencies(libother other_codegen_done)
82
83target_link_libraries(libt2n-example2-server ${LIBT2N_LIBRARIES} libdefault libother)
84add_dependencies(libt2n-example2-server default_codegen_done other_codegen_done)
85
86# Installation
87# install(TARGETS default_client ARCHIVE DESTINATION lib)
88# install(TARGETS other_client ARCHIVE DESTINATION lib)
89# install(TARGETS libt2n-example2-server DESTINATION bin)
90# install(FILES ${CPP_HEADERS} DESTINATION include)