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