Fork de wikipp, le moteur de wiki en c++, basé sur cppcms. Le fork ajoute la langue française
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

CMakeLists.txt 4.2KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168
  1. cmake_minimum_required(VERSION 2.6)
  2. project(wikipp)
  3. macro (set_rpath target)
  4. if(UNIX)
  5. set_target_properties(${target} PROPERTIES
  6. BUILD_WITH_INSTALL_RPATH TRUE
  7. INSTALL_RPATH "$ORIGIN;$ORIGIN/../lib;$ORIGIN/.."
  8. )
  9. endif()
  10. endmacro()
  11. include(CPack)
  12. if(NOT CMAKE_BUILD_TYPE)
  13. set(CMAKE_BUILD_TYPE RelWithDebInfo CACHE STRING
  14. "Choose the type of build, options are: None Debug Release RelWithDebInfo MinSizeRel."
  15. FORCE)
  16. endif(NOT CMAKE_BUILD_TYPE)
  17. option(USE_STATIC_VIEW "Compile view statically into wikipp" OFF)
  18. if(WIN32 OR CYGWIN)
  19. add_definitions(-DDLL_EXPORT)
  20. endif()
  21. find_library(CPPCMS cppcms)
  22. find_library(BOOSTER booster)
  23. find_library(CPPDB cppdb)
  24. find_library(DISCOUNT markdown)
  25. find_path(CPPCMS_INC cppcms/application.h)
  26. find_path(BOOSTER_INC booster/shared_ptr.h)
  27. find_path(CPPDB_INC cppdb/frontend.h)
  28. find_path(DISCOUNT_INC mkdio.h)
  29. if(NOT DISCOUNT_INC OR NOT DISCOUNT)
  30. message(FATAL "-- Discount markdown library was not found, please download it from \n"
  31. " http://www.pell.portland.or.us/~orc/Code/discount/ and install it\n"
  32. " By extracting it and running ./configure.sh && make CFLAGS=-O2\n")
  33. endif()
  34. include_directories(${CPPCMS_INC})
  35. include_directories(${BOOSTER_INC})
  36. include_directories(${CPPDB_INC})
  37. include_directories(${DISCOUNT_INC})
  38. include_directories(${CMAKE_CURRENT_SOURCE_DIR}/src)
  39. find_program(TMPLCC cppcms_tmpl_cc)
  40. find_program(XGETTEXT xgettext)
  41. find_program(MSGFMT msgfmt)
  42. find_program(MSGMERGE msgmerge)
  43. if(WIN32)
  44. add_definitions(-DDLL_EXPORT)
  45. endif()
  46. set(TEMPLATES
  47. ${CMAKE_CURRENT_SOURCE_DIR}/templates/main.tmpl
  48. ${CMAKE_CURRENT_SOURCE_DIR}/templates/page.tmpl
  49. ${CMAKE_CURRENT_SOURCE_DIR}/templates/hist.tmpl
  50. ${CMAKE_CURRENT_SOURCE_DIR}/templates/admin.tmpl
  51. ${CMAKE_CURRENT_SOURCE_DIR}/templates/toc.tmpl
  52. )
  53. set(SRC
  54. src/index.cpp
  55. src/main.cpp
  56. src/master.cpp
  57. src/options.cpp
  58. src/page.cpp
  59. src/users.cpp
  60. src/wiki.cpp
  61. src/markdown.cpp
  62. )
  63. add_custom_command(
  64. OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/view.cpp
  65. COMMAND ${TMPLCC}
  66. -d wikipp
  67. -o ${CMAKE_CURRENT_BINARY_DIR}/view.cpp
  68. ${TEMPLATES}
  69. DEPENDS ${TEMPLATES})
  70. if(USE_STATIC_VIEW)
  71. add_executable(wikipp ${SRC} ${CMAKE_CURRENT_BINARY_DIR}/view.cpp)
  72. else()
  73. add_executable(wikipp ${SRC})
  74. add_library(view SHARED ${CMAKE_CURRENT_BINARY_DIR}/view.cpp)
  75. set_rpath(view)
  76. target_link_libraries(view ${BOOSTER} ${CPPCMS})
  77. endif()
  78. set_rpath(wikipp)
  79. target_link_libraries(wikipp ${BOOSTER} ${CPPCMS} ${CPPDB} ${DISCOUNT})
  80. # Localization
  81. set(LOCALES he ru pl fr)
  82. set(MO_FILES)
  83. set(UPDATE_PO_LIST)
  84. set(POT_TEMPLATE "${CMAKE_CURRENT_SOURCE_DIR}/po/wikipp.pot")
  85. add_custom_command(
  86. OUTPUT ${POT_TEMPLATE}
  87. COMMAND
  88. ${XGETTEXT}
  89. --keyword=translate:1,1t
  90. --keyword=translate:1,2,3t
  91. --keyword=_
  92. --keyword=N_
  93. ${SRC}
  94. ${CMAKE_CURRENT_BINARY_DIR}/view.cpp
  95. --output=${POT_TEMPLATE}
  96. DEPENDS ${SRC} ${CMAKE_CURRENT_BINARY_DIR}/view.cpp
  97. WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
  98. )
  99. add_custom_target(update-po)
  100. foreach(LOCALE ${LOCALES})
  101. set(MODIR "${CMAKE_CURRENT_BINARY_DIR}/locale/${LOCALE}/LC_MESSAGES")
  102. file(MAKE_DIRECTORY "${MODIR}")
  103. set(MOFILE "${MODIR}/wikipp.mo")
  104. set(POFILE "${CMAKE_CURRENT_SOURCE_DIR}/po/${LOCALE}.po")
  105. add_custom_command(
  106. OUTPUT ${MOFILE}
  107. COMMAND ${MSGFMT} ${POFILE} -o ${MOFILE}
  108. DEPENDS ${POFILE})
  109. add_custom_target(update-po-${LOCALE}
  110. COMMAND ${MSGMERGE} -U ${POFILE} ${CMAKE_CURRENT_SOURCE_DIR}/po/wikipp.pot
  111. DEPENDS ${POT_TEMPLATE}
  112. )
  113. add_dependencies(update-po update-po-${LOCALE})
  114. set(MO_FILES ${MO_FILES} ${MOFILE})
  115. set(UPDATE_PO_LIST ${UPDATE_PO_LIST} update-po-${LOCALE})
  116. endforeach()
  117. add_custom_target(create-po ALL DEPENDS ${MO_FILES})
  118. add_executable(wikipp_migrate src/migrate.cpp)
  119. set_rpath(wikipp_migrate)
  120. target_link_libraries(wikipp_migrate ${CPPDB})
  121. install(TARGETS wikipp wikipp_migrate view
  122. RUNTIME DESTINATION bin
  123. LIBRARY DESTINATION lib/wikipp
  124. ARCHIVE DESTINATION lib/wikipp)
  125. foreach(STYLE style style-ltr style-rtl)
  126. install(FILES media/${STYLE}.css DESTINATION share/wikipp/media)
  127. endforeach()
  128. foreach(LOCALE ${LOCALES})
  129. install(FILES ${CMAKE_CURRENT_BINARY_DIR}/locale/${LOCALE}/LC_MESSAGES/wikipp.mo
  130. DESTINATION share/locale/${LOCALE}/LC_MESSAGES/)
  131. endforeach()
  132. install(FILES sample_config.js DESTINATION share/wikipp)