CMakeLists.txt 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329
  1. # "Getting Started with CMake", a tutorial video by Eric Wing.
  2. # Part 1 of 6: http://www.youtube.com/watch?v=CLvZTyji_Uw
  3. # Part 2 of 6: http://www.youtube.com/watch?v=gUW-RrRQjEg
  4. # Part 3 of 6: http://www.youtube.com/watch?v=sz6cPhbuTk4
  5. # Part 4 of 6: http://www.youtube.com/watch?v=JICZOkyNXbg
  6. # Part 5 of 6: http://www.youtube.com/watch?v=lAiuLHy4dCk
  7. # Part 6 of 6: http://www.youtube.com/watch?v=fAtJNzDZdH8
  8. cmake_minimum_required( VERSION 2.8.4 )
  9. project( eAthena )
  10. #
  11. # Prevent building in the source directory by default
  12. #
  13. if( ALLOW_SAME_DIRECTORY )
  14. elseif( "${CMAKE_CURRENT_SOURCE_DIR}" STREQUAL "${CMAKE_CURRENT_BINARY_DIR}" )
  15. option( ALLOW_SAME_DIRECTORY "Allow CMake to build in the source directory." OFF )
  16. message( FATAL_ERROR "Do not use the source directory to build your files, instead create a separate folder and build there.\nExample:\n mkdir build\n cd build\n cmake -G\"Unix Makefiles\" ..\n make install\nTo skip this check, set ALLOW_SAME_DIRECTORY to 1 or ON" )
  17. endif()
  18. #
  19. # Debug stuff
  20. #
  21. if( NOT SKIP_DEBUG )
  22. message( STATUS "DEBUG: # Variables That Change Behavior" )
  23. message( STATUS "DEBUG: BUILD_SHARED_LIBS=${BUILD_SHARED_LIBS}" )
  24. message( STATUS "DEBUG: CMAKE_BACKWARDS_COMPATIBILITY=${CMAKE_BACKWARDS_COMPATIBILITY}" )
  25. message( STATUS "DEBUG: CMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}" )
  26. message( STATUS "DEBUG: CMAKE_COLOR_MAKEFILE=${CMAKE_COLOR_MAKEFILE}" )
  27. message( STATUS "DEBUG: CMAKE_CONFIGURATION_TYPES=${CMAKE_CONFIGURATION_TYPES}" )
  28. message( STATUS "DEBUG: CMAKE_FIND_LIBRARY_PREFIXES=${CMAKE_FIND_LIBRARY_PREFIXES}" )
  29. message( STATUS "DEBUG: CMAKE_FIND_LIBRARY_SUFFIXES=${CMAKE_FIND_LIBRARY_SUFFIXES}" )
  30. message( STATUS "DEBUG: CMAKE_IGNORE_PATH=${CMAKE_IGNORE_PATH}" )
  31. message( STATUS "DEBUG: CMAKE_INCLUDE_PATH=${CMAKE_INCLUDE_PATH}" )
  32. message( STATUS "DEBUG: CMAKE_INSTALL_PREFIX=${CMAKE_INSTALL_PREFIX}" )
  33. message( STATUS "DEBUG: CMAKE_LIBRARY_PATH=${CMAKE_LIBRARY_PATH}" )
  34. message( STATUS "DEBUG: CMAKE_MFC_FLAG=${CMAKE_MFC_FLAG}" )
  35. message( STATUS "DEBUG: CMAKE_MODULE_PATH=${CMAKE_MODULE_PATH}" )
  36. message( STATUS "DEBUG: CMAKE_NOT_USING_CONFIG_FLAGS=${CMAKE_NOT_USING_CONFIG_FLAGS}" )
  37. message( STATUS "DEBUG: CMAKE_PREFIX_PATH=${CMAKE_PREFIX_PATH}" )
  38. message( STATUS "DEBUG: CMAKE_PROGRAM_PATH=${CMAKE_PROGRAM_PATH}" )
  39. message( STATUS "DEBUG: CMAKE_SKIP_INSTALL_ALL_DEPENDENCY=${CMAKE_SKIP_INSTALL_ALL_DEPENDENCY}" )
  40. message( STATUS "DEBUG: CMAKE_SYSTEM_IGNORE_PATH=${CMAKE_SYSTEM_IGNORE_PATH}" )
  41. message( STATUS "DEBUG: CMAKE_SYSTEM_INCLUDE_PATH=${CMAKE_SYSTEM_INCLUDE_PATH}" )
  42. message( STATUS "DEBUG: CMAKE_SYSTEM_LIBRARY_PATH=${CMAKE_SYSTEM_LIBRARY_PATH}" )
  43. message( STATUS "DEBUG: CMAKE_SYSTEM_PREFIX_PATH=${CMAKE_SYSTEM_PREFIX_PATH}" )
  44. message( STATUS "DEBUG: CMAKE_SYSTEM_PROGRAM_PATH=${CMAKE_SYSTEM_PROGRAM_PATH}" )
  45. message( STATUS "DEBUG: CMAKE_USER_MAKE_RULES_OVERRIDE=${CMAKE_USER_MAKE_RULES_OVERRIDE}" )
  46. message( STATUS "DEBUG: # Variables That Describe the System" )
  47. message( STATUS "DEBUG: APPLE=${APPLE}" )
  48. message( STATUS "DEBUG: BORLAND=${BORLAND}" )
  49. message( STATUS "DEBUG: CMAKE_CL_64=${CMAKE_CL_64}" )
  50. message( STATUS "DEBUG: CMAKE_COMPILER_2005=${CMAKE_COMPILER_2005}" )
  51. message( STATUS "DEBUG: CMAKE_HOST_APPLE=${CMAKE_HOST_APPLE}" )
  52. message( STATUS "DEBUG: CMAKE_HOST_SYSTEM=${CMAKE_HOST_SYSTEM}" )
  53. message( STATUS "DEBUG: CMAKE_HOST_SYSTEM_NAME=${CMAKE_HOST_SYSTEM_NAME}" )
  54. message( STATUS "DEBUG: CMAKE_HOST_SYSTEM_PROCESSOR=${CMAKE_HOST_SYSTEM_PROCESSOR}" )
  55. message( STATUS "DEBUG: CMAKE_HOST_SYSTEM_VERSION=${CMAKE_HOST_SYSTEM_VERSION}" )
  56. message( STATUS "DEBUG: CMAKE_HOST_UNIX=${CMAKE_HOST_UNIX}" )
  57. message( STATUS "DEBUG: CMAKE_HOST_WIN32=${CMAKE_HOST_WIN32}" )
  58. message( STATUS "DEBUG: CMAKE_OBJECT_PATH_MAX=${CMAKE_OBJECT_PATH_MAX}" )
  59. message( STATUS "DEBUG: CMAKE_SYSTEM=${CMAKE_SYSTEM}" )
  60. message( STATUS "DEBUG: CMAKE_SYSTEM_NAME=${CMAKE_SYSTEM_NAME}" )
  61. message( STATUS "DEBUG: CMAKE_SYSTEM_PROCESSOR=${CMAKE_SYSTEM_PROCESSOR}" )
  62. message( STATUS "DEBUG: CMAKE_SYSTEM_VERSION=${CMAKE_SYSTEM_VERSION}" )
  63. message( STATUS "DEBUG: CYGWIN=${CYGWIN}" )
  64. message( STATUS "DEBUG: MSVC=${MSVC}" )
  65. message( STATUS "DEBUG: MSVC80=${MSVC80}" )
  66. message( STATUS "DEBUG: MSVC_IDE=${MSVC_IDE}" )
  67. message( STATUS "DEBUG: MSVC_VERSION=${MSVC_VERSION}" )
  68. message( STATUS "DEBUG: UNIX=${UNIX}" )
  69. message( STATUS "DEBUG: WIN32=${WIN32}" )
  70. message( STATUS "DEBUG: XCODE_VERSION=${XCODE_VERSION}" )
  71. message( STATUS "DEBUG: # Variables that Control the Build" )
  72. message( STATUS "DEBUG: CMAKE_ARCHIVE_OUTPUT_DIRECTORY=${CMAKE_ARCHIVE_OUTPUT_DIRECTORY}" )
  73. message( STATUS "DEBUG: CMAKE_BUILD_WITH_INSTALL_RPATH=${CMAKE_BUILD_WITH_INSTALL_RPATH}" )
  74. message( STATUS "DEBUG: CMAKE_DEBUG_POSTFIX=${CMAKE_DEBUG_POSTFIX}" )
  75. message( STATUS "DEBUG: CMAKE_EXE_LINKER_FLAGS=${CMAKE_EXE_LINKER_FLAGS}" )
  76. message( STATUS "DEBUG: CMAKE_INCLUDE_CURRENT_DIR=${CMAKE_INCLUDE_CURRENT_DIR}" )
  77. message( STATUS "DEBUG: CMAKE_INSTALL_NAME_DIR=${CMAKE_INSTALL_NAME_DIR}" )
  78. message( STATUS "DEBUG: CMAKE_INSTALL_RPATH=${CMAKE_INSTALL_RPATH}" )
  79. message( STATUS "DEBUG: CMAKE_INSTALL_RPATH_USE_LINK_PATH=${CMAKE_INSTALL_RPATH_USE_LINK_PATH}" )
  80. message( STATUS "DEBUG: CMAKE_LIBRARY_OUTPUT_DIRECTORY=${CMAKE_LIBRARY_OUTPUT_DIRECTORY}" )
  81. message( STATUS "DEBUG: CMAKE_LIBRARY_PATH_FLAG=${CMAKE_LIBRARY_PATH_FLAG}" )
  82. message( STATUS "DEBUG: CMAKE_LINK_DEF_FILE_FLAG=${CMAKE_LINK_DEF_FILE_FLAG}" )
  83. message( STATUS "DEBUG: CMAKE_LINK_LIBRARY_FILE_FLAG=${CMAKE_LINK_LIBRARY_FILE_FLAG}" )
  84. message( STATUS "DEBUG: CMAKE_LINK_LIBRARY_FLAG=${CMAKE_LINK_LIBRARY_FLAG}" )
  85. message( STATUS "DEBUG: CMAKE_NO_BUILTIN_CHRPATH=${CMAKE_NO_BUILTIN_CHRPATH}" )
  86. message( STATUS "DEBUG: CMAKE_RUNTIME_OUTPUT_DIRECTORY=${CMAKE_RUNTIME_OUTPUT_DIRECTORY}" )
  87. message( STATUS "DEBUG: CMAKE_SKIP_BUILD_RPATH=${CMAKE_SKIP_BUILD_RPATH}" )
  88. message( STATUS "DEBUG: CMAKE_TRY_COMPILE_CONFIGURATION=${CMAKE_TRY_COMPILE_CONFIGURATION}" )
  89. message( STATUS "DEBUG: CMAKE_USE_RELATIVE_PATHS=${CMAKE_USE_RELATIVE_PATHS}" )
  90. message( STATUS "DEBUG: EXECUTABLE_OUTPUT_PATH=${EXECUTABLE_OUTPUT_PATH}" )
  91. message( STATUS "DEBUG: LIBRARY_OUTPUT_PATH=${LIBRARY_OUTPUT_PATH}" )
  92. message( STATUS "DEBUG: # Variables that Provide Information" )
  93. message( STATUS "DEBUG: CMAKE_AR=${CMAKE_AR}" )
  94. message( STATUS "DEBUG: CMAKE_BINARY_DIR=${CMAKE_BINARY_DIR}" )
  95. message( STATUS "DEBUG: CMAKE_BUILD_TOOL=${CMAKE_BUILD_TOOL}" )
  96. message( STATUS "DEBUG: CMAKE_CACHEFILE_DIR=${CMAKE_CACHEFILE_DIR}" )
  97. message( STATUS "DEBUG: CMAKE_CACHE_MAJOR_VERSION=${CMAKE_CACHE_MAJOR_VERSION}" )
  98. message( STATUS "DEBUG: CMAKE_CACHE_MINOR_VERSION=${CMAKE_CACHE_MINOR_VERSION}" )
  99. message( STATUS "DEBUG: CMAKE_CACHE_PATCH_VERSION=${CMAKE_CACHE_PATCH_VERSION}" )
  100. message( STATUS "DEBUG: CMAKE_CFG_INTDIR=${CMAKE_CFG_INTDIR}" )
  101. message( STATUS "DEBUG: CMAKE_COMMAND=${CMAKE_COMMAND}" )
  102. message( STATUS "DEBUG: CMAKE_CROSSCOMPILING=${CMAKE_CROSSCOMPILING}" )
  103. message( STATUS "DEBUG: CMAKE_CTEST_COMMAND=${CMAKE_CTEST_COMMAND}" )
  104. message( STATUS "DEBUG: CMAKE_CURRENT_BINARY_DIR=${CMAKE_CURRENT_BINARY_DIR}" )
  105. message( STATUS "DEBUG: CMAKE_CURRENT_LIST_DIR=${CMAKE_CURRENT_LIST_DIR}" )
  106. message( STATUS "DEBUG: CMAKE_CURRENT_LIST_FILE=${CMAKE_CURRENT_LIST_FILE}" )
  107. message( STATUS "DEBUG: CMAKE_CURRENT_LIST_LINE=${CMAKE_CURRENT_LIST_LINE}" )
  108. message( STATUS "DEBUG: CMAKE_CURRENT_SOURCE_DIR=${CMAKE_CURRENT_SOURCE_DIR}" )
  109. message( STATUS "DEBUG: CMAKE_DL_LIBS=${CMAKE_DL_LIBS}" )
  110. message( STATUS "DEBUG: CMAKE_EDIT_COMMAND=${CMAKE_EDIT_COMMAND}" )
  111. message( STATUS "DEBUG: CMAKE_EXECUTABLE_SUFFIX=${CMAKE_EXECUTABLE_SUFFIX}" )
  112. message( STATUS "DEBUG: CMAKE_EXTRA_GENERATOR=${CMAKE_EXTRA_GENERATOR}" )
  113. message( STATUS "DEBUG: CMAKE_EXTRA_SHARED_LIBRARY_SUFFIXES=${CMAKE_EXTRA_SHARED_LIBRARY_SUFFIXES}" )
  114. message( STATUS "DEBUG: CMAKE_GENERATOR=${CMAKE_GENERATOR}" )
  115. message( STATUS "DEBUG: CMAKE_HOME_DIRECTORY=${CMAKE_HOME_DIRECTORY}" )
  116. message( STATUS "DEBUG: CMAKE_IMPORT_LIBRARY_PREFIX=${CMAKE_IMPORT_LIBRARY_PREFIX}" )
  117. message( STATUS "DEBUG: CMAKE_IMPORT_LIBRARY_SUFFIX=${CMAKE_IMPORT_LIBRARY_SUFFIX}" )
  118. message( STATUS "DEBUG: CMAKE_LINK_LIBRARY_SUFFIX=${CMAKE_LINK_LIBRARY_SUFFIX}" )
  119. message( STATUS "DEBUG: CMAKE_MAJOR_VERSION=${CMAKE_MAJOR_VERSION}" )
  120. message( STATUS "DEBUG: CMAKE_MAKE_PROGRAM=${CMAKE_MAKE_PROGRAM}" )
  121. message( STATUS "DEBUG: CMAKE_MINOR_VERSION=${CMAKE_MINOR_VERSION}" )
  122. message( STATUS "DEBUG: CMAKE_PARENT_LIST_FILE=${CMAKE_PARENT_LIST_FILE}" )
  123. message( STATUS "DEBUG: CMAKE_PATCH_VERSION=${CMAKE_PATCH_VERSION}" )
  124. message( STATUS "DEBUG: CMAKE_PROJECT_NAME=${CMAKE_PROJECT_NAME}" )
  125. message( STATUS "DEBUG: CMAKE_RANLIB=${CMAKE_RANLIB}" )
  126. message( STATUS "DEBUG: CMAKE_ROOT=${CMAKE_ROOT}" )
  127. message( STATUS "DEBUG: CMAKE_SHARED_LIBRARY_PREFIX=${CMAKE_SHARED_LIBRARY_PREFIX}" )
  128. message( STATUS "DEBUG: CMAKE_SHARED_LIBRARY_SUFFIX=${CMAKE_SHARED_LIBRARY_SUFFIX}" )
  129. message( STATUS "DEBUG: CMAKE_SHARED_MODULE_PREFIX=${CMAKE_SHARED_MODULE_PREFIX}" )
  130. message( STATUS "DEBUG: CMAKE_SHARED_MODULE_SUFFIX=${CMAKE_SHARED_MODULE_SUFFIX}" )
  131. message( STATUS "DEBUG: CMAKE_SIZEOF_VOID_P=${CMAKE_SIZEOF_VOID_P}" )
  132. message( STATUS "DEBUG: CMAKE_SKIP_RPATH=${CMAKE_SKIP_RPATH}" )
  133. message( STATUS "DEBUG: CMAKE_SOURCE_DIR=${CMAKE_SOURCE_DIR}" )
  134. message( STATUS "DEBUG: CMAKE_STANDARD_LIBRARIES=${CMAKE_STANDARD_LIBRARIES}" )
  135. message( STATUS "DEBUG: CMAKE_STATIC_LIBRARY_PREFIX=${CMAKE_STATIC_LIBRARY_PREFIX}" )
  136. message( STATUS "DEBUG: CMAKE_STATIC_LIBRARY_SUFFIX=${CMAKE_STATIC_LIBRARY_SUFFIX}" )
  137. message( STATUS "DEBUG: CMAKE_TWEAK_VERSION=${CMAKE_TWEAK_VERSION}" )
  138. message( STATUS "DEBUG: CMAKE_USING_VC_FREE_TOOLS=${CMAKE_USING_VC_FREE_TOOLS}" )
  139. message( STATUS "DEBUG: CMAKE_VERBOSE_MAKEFILE=${CMAKE_VERBOSE_MAKEFILE}" )
  140. message( STATUS "DEBUG: CMAKE_VERSION=${CMAKE_VERSION}" )
  141. message( STATUS "DEBUG: PROJECT_BINARY_DIR=${PROJECT_BINARY_DIR}" )
  142. message( STATUS "DEBUG: PROJECT_NAME=${PROJECT_NAME}" )
  143. message( STATUS "DEBUG: PROJECT_SOURCE_DIR=${PROJECT_SOURCE_DIR}" )
  144. set( CMAKE_INSTALL_PREFIX ${CMAKE_CURRENT_BINARY_DIR}/install CACHE PATH "test install to dir" FORCE )
  145. #set( CMAKE_INSTALL_PREFIX ${CMAKE_CURRENT_SOURCE_DIR} CACHE PATH "test install to source dir" FORCE )
  146. endif( NOT SKIP_DEBUG )
  147. #
  148. # Global stuff
  149. #
  150. set( GLOBAL_LIBRARIES "" CACHE INTERNAL "" )
  151. set( GLOBAL_INCLUDE_DIRS "" CACHE INTERNAL "" )
  152. set( GLOBAL_DEFINITIONS "" CACHE INTERNAL "" )
  153. mark_as_advanced( GLOBAL_LIBRARIES GLOBAL_INCLUDE_DIRS GLOBAL_DEFINITIONS )
  154. if( WIN32 )
  155. list( APPEND GLOBAL_DEFINITIONS FD_SETSIZE=4096 )
  156. endif()
  157. if( MSVC )
  158. list( APPEND GLOBAL_DEFINITIONS _CRT_SECURE_NO_DEPRECATE _CRT_NONSTDC_NO_DEPRECATE DB_MANUAL_CAST_TO_UNION )
  159. endif()
  160. #
  161. # packetver
  162. #
  163. set( PACKETVER ""
  164. CACHE STRING "Sets the PACKETVER define of the servers. (see src/common/mmo.h)" )
  165. #####################################################################
  166. # package stuff
  167. #
  168. if( OFF )
  169. set( CPACK_PACKAGE_NAME "eAthena" )
  170. set( CPACK_PACKAGE_DESCRIPTION_SUMMARY "MMORPG server package" )
  171. set( CPACK_PACKAGE_FILE_NAME )
  172. set( CPACK_PACKAGE_INSTALL_DIRECTORY )
  173. set( CPACK_PROJECT_CONFIG_FILE )
  174. set( CPACK_RESOURCE_FILE_LICENSE ${CMAKE_CURRENT_SOURCE_DIR}/LICENSE )
  175. set( CPACK_RESOURCE_FILE_README )
  176. set( CPACK_RESOURCE_FILE_WELCOME )
  177. set( CPACK_MONOLITHIC_INSTALL ON )
  178. set( CPACK_GENERATOR "ZIP" )
  179. set( CPACK_OUTPUT_CONFIG_FILE )
  180. set( CPACK_PACKAGE_EXECUTABLES )
  181. set( CPACK_STRIP_FILES )
  182. #source
  183. set( CPACK_SOURCE_PACKAGE_FILE_NAME )
  184. set( CPACK_SOURCE_STRIP_FILES )
  185. set( CPACK_SOURCE_GENERATOR "ZIP" )
  186. set( CPACK_SOURCE_OUTPUT_CONFIG_FILE )
  187. set( CPACK_SOURCE_IGNORE_FILES )
  188. include(CPACK)
  189. endif()
  190. #
  191. # install stuff
  192. #
  193. set( COMPONENT_SOURCE "Source code, librarires and project files" CACHE INTERNAL "" )
  194. set( COMPONENT_BASE "Base files" CACHE INTERNAL "" )
  195. option( INSTALL_RUN_DATA "install files needed to run the project" ON )
  196. option( INSTALL_BUILD_DATA "install files needed to build the project" OFF )
  197. set( SVN_FOLDER_PATTERN "[\\.]svn"
  198. CACHE STRING "pattern of svn folder that we exclude from instalations" )
  199. mark_as_advanced( SVN_FOLDER_PATTERN )
  200. if( "${CMAKE_CURRENT_SOURCE_DIR}" STREQUAL "${CMAKE_INSTALL_PREFIX}" )
  201. set( INSTALLING_TO_SOURCE ON
  202. CACHE INTERNAL "we are installing to the source folder, skip uneeded stuff" )
  203. else()
  204. unset( INSTALLING_TO_SOURCE CACHE )
  205. endif()
  206. set( LOCAL_BUILD_FILES
  207. "CMakeLists.txt"
  208. "configure"
  209. "configure.in"
  210. "eAthena-6.dsw"
  211. "eAthena-7.1.sln"
  212. "eAthena-8.sln"
  213. "eAthena-9.sln"
  214. "eAthena-10.sln"
  215. )
  216. set( LOCAL_BUILD_DIRECTORIES
  217. "3rdparty"
  218. "src"
  219. "vcproj-6"
  220. "vcproj-7.1"
  221. "vcproj-8"
  222. "vcproj-9"
  223. "vcproj-10"
  224. )
  225. set( LOCAL_RUN_FILES
  226. "athena-start"
  227. "Changelog-Trunk.txt"
  228. "char-server.sh"
  229. "charserv-sql.bat"
  230. "charserv.bat"
  231. "dbghelp.dll"
  232. "LICENSE"
  233. "login-server.sh"
  234. "logserv-sql.bat"
  235. "logserv.bat"
  236. "map-server.sh"
  237. "mapserv-sql.bat"
  238. "mapserv.bat"
  239. "notice.txt"
  240. "readme.html"
  241. "runserver-sql.bat"
  242. "runserver.bat"
  243. "serv.bat"
  244. "start"
  245. )
  246. set( LOCAL_RUN_DIRECTORIES
  247. "conf"
  248. "db"
  249. "doc"
  250. "log"
  251. "npc"
  252. "plugins"
  253. "readme"
  254. "sql-files"
  255. "tools"
  256. )
  257. if( USE_LOCAL_MYSQL )
  258. list( APPEND LOCAL_RUN_FILES "libmysql.dll" )
  259. endif()
  260. if( USE_LOCAL_PCRE )
  261. list( APPEND LOCAL_RUN_FILES "pcre3.dll" )
  262. endif()
  263. if( USE_LOCAL_ZLIB )
  264. list( APPEND LOCAL_RUN_FILES "zlib1.dll" )
  265. endif()
  266. function( INSTALL_DIRECTORY DIR DEST EXCLUDE_PATTERN )
  267. # warning: that slash(/) is important here, otherwise the whole directory (not its content) will be copied!
  268. install( DIRECTORY ${DIR}/
  269. DESTINATION ${DEST}
  270. PATTERN ${SVN_FOLDER_PATTERN} EXCLUDE
  271. PATTERN "${EXCLUDE_PATTERN}" EXCLUDE )
  272. endfunction()
  273. function( INSTALL_DIRECTORIES DIRS EXCLUDE_PATTERN )
  274. foreach( DIR IN ITEMS ${DIRS} )
  275. INSTALL_DIRECTORY( ${DIR} ${DIR} "${EXCLUDE_PATTERN}" )
  276. endforeach()
  277. endfunction()
  278. if( NOT INSTALLING_TO_SOURCE )
  279. # skipped if in-source
  280. if( INSTALL_RUN_DATA )
  281. # base
  282. install( FILES ${LOCAL_RUN_FILES}
  283. DESTINATION ${CMAKE_INSTALL_PREFIX} )
  284. foreach( DIR IN ITEMS ${LOCAL_RUN_DIRECTORIES} )
  285. install( DIRECTORY "${DIR}/"
  286. DESTINATION "${DIR}"
  287. PATTERN ${SVN_FOLDER_PATTERN} EXCLUDE
  288. PATTERN "conf/import-tmpl" EXCLUDE )
  289. endforeach()
  290. endif()
  291. if( INSTALL_BUILD_DATA )
  292. # source
  293. install( FILES ${LOCAL_BUILD_FILES}
  294. DESTINATION ${CMAKE_INSTALL_PREFIX} )
  295. foreach( DIR IN ITEMS ${LOCAL_BUILD_DIRECTORIES} )
  296. install( DIRECTORY "${DIR}/"
  297. DESTINATION "${DIR}"
  298. PATTERN ${SVN_FOLDER_PATTERN} EXCLUDE )
  299. endforeach()
  300. endif()
  301. endif()
  302. if( INSTALL_RUN_DATA )
  303. # base templates
  304. install( DIRECTORY "save-tmpl/"
  305. DESTINATION "save"
  306. PATTERN ${SVN_FOLDER_PATTERN} EXCLUDE )
  307. install( DIRECTORY "conf/import-tmpl/"
  308. DESTINATION "conf/import"
  309. PATTERN ${SVN_FOLDER_PATTERN} EXCLUDE )
  310. endif()
  311. #
  312. # subdirectories
  313. #
  314. add_subdirectory( 3rdparty )
  315. add_subdirectory( src )