| 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 ./) |