Fork de wikipp, le moteur de wiki en c++, basé sur cppcms. Le fork ajoute la langue française
Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.

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)