CMakeLists.txt 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. cmake_minimum_required(VERSION 3.8)
  2. project(LotRO_dat_library)
  3. set(CMAKE_CXX_STANDARD 11)
  4. set(PROJECT_BINARY_DIR bin)
  5. set(PROJECT_VERSION 0.1.0)
  6. SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${GCC_COVERAGE_COMPILE_FLAGS}" )
  7. SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${GCC_COVERAGE_LINK_FLAGS}")
  8. if (MSVS)
  9. set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS_RELEASE} /MT /SAFESEH:NO")
  10. endif(MSVS)
  11. set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/lib)
  12. set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/lib)
  13. set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/bin)
  14. set(CMAKE_SOURCE_DIR ${CMAKE_SOURCE_DIR}/src)
  15. include_directories(${CMAKE_SOURCE_DIR}/Common/Yaml)
  16. SET(EXECUTABLE_OUTPUT_PATH ${CMAKE_OUTPUT_DIR})
  17. SET(LIBRARY_OUTPUT_PATH ${CMAKE_OUTPUT_DIR})
  18. set(SOURCE_FILES
  19. ${CMAKE_SOURCE_DIR}/Common/CommonFunctions.h
  20. ${CMAKE_SOURCE_DIR}/Common/DatException.h
  21. ${CMAKE_SOURCE_DIR}/LotroDatPatcher.h
  22. ${CMAKE_SOURCE_DIR}/DatFile.cpp
  23. ${CMAKE_SOURCE_DIR}/DatFile.h
  24. ${CMAKE_SOURCE_DIR}/BinaryData.cpp
  25. ${CMAKE_SOURCE_DIR}/BinaryData.h
  26. ${CMAKE_SOURCE_DIR}/Database.cpp
  27. ${CMAKE_SOURCE_DIR}/Database.h
  28. ${CMAKE_SOURCE_DIR}/Subfile.cpp
  29. ${CMAKE_SOURCE_DIR}/Subfile.h
  30. ${CMAKE_SOURCE_DIR}/SubDirectory.cpp
  31. ${CMAKE_SOURCE_DIR}/SubDirectory.h
  32. ${CMAKE_SOURCE_DIR}/Common/SQLite/sqlite3.c
  33. ${CMAKE_SOURCE_DIR}/Common/SQLite/sqlite3.h
  34. ${CMAKE_SOURCE_DIR}/Subfiles/TextSubfile.cpp
  35. ${CMAKE_SOURCE_DIR}/Subfiles/TextSubfile.h
  36. ${CMAKE_SOURCE_DIR}/Subfiles/JpgSubfile.cpp
  37. ${CMAKE_SOURCE_DIR}/Subfiles/JpgSubfile.h
  38. ${CMAKE_SOURCE_DIR}/Subfiles/DdsSubfile.cpp
  39. ${CMAKE_SOURCE_DIR}/Subfiles/DdsSubfile.h
  40. ${CMAKE_SOURCE_DIR}/Subfiles/OggSubfile.cpp
  41. ${CMAKE_SOURCE_DIR}/Subfiles/OggSubfile.h
  42. ${CMAKE_SOURCE_DIR}/Subfiles/FontSubfile.cpp
  43. ${CMAKE_SOURCE_DIR}/Subfiles/FontSubfile.h
  44. ${CMAKE_SOURCE_DIR}/Subfiles/WavSubfile.cpp
  45. ${CMAKE_SOURCE_DIR}/Subfiles/WavSubfile.h
  46. ${CMAKE_SOURCE_DIR}/Subfiles/UnknownSubfile.cpp
  47. ${CMAKE_SOURCE_DIR}/Subfiles/UnknownSubfile.h
  48. src/SubfileData.h)
  49. set(CompilerFlags
  50. CMAKE_CXX_FLAGS
  51. CMAKE_CXX_FLAGS_DEBUG
  52. CMAKE_CXX_FLAGS_RELEASE
  53. CMAKE_CXX_FLAGS_MINSIZEREL
  54. CMAKE_CXX_FLAGS_RELWITHDEBINFO
  55. CMAKE_C_FLAGS
  56. CMAKE_C_FLAGS_DEBUG
  57. CMAKE_C_FLAGS_RELEASE
  58. CMAKE_C_FLAGS_MINSIZEREL
  59. CMAKE_C_FLAGS_RELWITHDEBINFO
  60. )
  61. foreach(CompilerFlag ${CompilerFlags})
  62. string(REPLACE "/MD" "/MT" ${CompilerFlag} "${${CompilerFlag}}")
  63. endforeach()
  64. # STATIC LIBRARY
  65. add_library(LotroDat_static STATIC ${SOURCE_FILES})
  66. # SHARED LIBRARY
  67. add_library(LotroDat SHARED ${SOURCE_FILES})
  68. # CONSOLE EXTRACTOR TOOL
  69. add_executable(LotRO_dat_extract_tester ${SOURCE_FILES} ${CMAKE_SOURCE_DIR}/Examples/extractor_example.cpp)
  70. # CONSOLE PATCHER TOOL
  71. add_executable(LotRO_dat_pat_tester ${SOURCE_FILES} ${CMAKE_SOURCE_DIR}/Examples/patcher_example.cpp)
  72. foreach(TARGET LotroDat_static LotroDat LotRO_dat_extract_tester LotRO_dat_pat_tester)
  73. if(MSVC)
  74. target_link_libraries(${TARGET} ${CMAKE_SOURCE_DIR}/Common/Zlib/zlibstatic.lib)
  75. target_link_libraries(${TARGET} ${CMAKE_SOURCE_DIR}/Common/Yaml/libyaml-cppmt.lib)
  76. target_link_libraries(${TARGET} vcruntime.lib MSVCRT.lib)
  77. else(MSVC)
  78. target_link_libraries(${TARGET} ${CMAKE_SOURCE_DIR}/Common/Zlib/libzlibstatic.a)
  79. target_link_libraries(${TARGET} ${CMAKE_SOURCE_DIR}/Common/Yaml/libyaml-cpp.a)
  80. target_link_libraries(${TARGET} -static-libgcc -static-libstdc++ -Wl,-Bstatic -lstdc++ -lpthread -Wl,-Bdynamic)
  81. endif(MSVC)
  82. endforeach(TARGET LotroDat_static LotroDat LotRO_dat_extract_tester LotRO_dat_pat_tester)