mirror of
https://github.com/tfussell/xlnt.git
synced 2024-03-22 13:11:17 +08:00
use externalproject instead of git submodules for dependencies
This commit is contained in:
parent
65ad2466e1
commit
3db6cc8f0f
2
.gitignore
vendored
2
.gitignore
vendored
|
@ -1,5 +1,3 @@
|
||||||
bin/
|
|
||||||
lib/
|
|
||||||
build/
|
build/
|
||||||
docs/build/
|
docs/build/
|
||||||
docs/doxyxml/
|
docs/doxyxml/
|
||||||
|
|
8
.gitmodules
vendored
8
.gitmodules
vendored
|
@ -1,8 +0,0 @@
|
||||||
[submodule "third-party/libstudxml"]
|
|
||||||
path = third-party/libstudxml
|
|
||||||
url = http://scm.codesynthesis.com/libstudxml/libstudxml.git
|
|
||||||
branch = master
|
|
||||||
ignore = dirty
|
|
||||||
[submodule "third-party/cxxtest"]
|
|
||||||
path = third-party/cxxtest
|
|
||||||
url = https://github.com/CxxTest/cxxtest
|
|
|
@ -4,6 +4,8 @@ project(xlnt_all)
|
||||||
# This indicates to CMakeLists in subdirectories that they are part of a larger project
|
# This indicates to CMakeLists in subdirectories that they are part of a larger project
|
||||||
set(COMBINED_PROJECT TRUE)
|
set(COMBINED_PROJECT TRUE)
|
||||||
|
|
||||||
|
option(BUILD_DEPS "Set to ON to build zlib and cryptopp from source otherwise system libraries will be used for these" OFF)
|
||||||
|
|
||||||
# Library type
|
# Library type
|
||||||
option(STATIC "Set to ON to build ${PROJECT_NAME} as a static library instead of a shared library" OFF)
|
option(STATIC "Set to ON to build ${PROJECT_NAME} as a static library instead of a shared library" OFF)
|
||||||
|
|
||||||
|
|
|
@ -6,6 +6,10 @@ set(PROJECT_CONTACT "thomas.fussell@gmail.com")
|
||||||
set(PROJECT_URL "https://github.com/tfussell/xlnt")
|
set(PROJECT_URL "https://github.com/tfussell/xlnt")
|
||||||
set(PROJECT_DESCRIPTION "cross-platform user-friendly xlsx library for C++14")
|
set(PROJECT_DESCRIPTION "cross-platform user-friendly xlsx library for C++14")
|
||||||
|
|
||||||
|
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_SOURCE_DIR}/../third-party")
|
||||||
|
find_package(zlib)
|
||||||
|
find_package(CryptoPP)
|
||||||
|
|
||||||
if(APPLE)
|
if(APPLE)
|
||||||
option(FRAMEWORK "Set to ON to package dylib and headers into a .framework, OSX only" OFF)
|
option(FRAMEWORK "Set to ON to package dylib and headers into a .framework, OSX only" OFF)
|
||||||
endif()
|
endif()
|
||||||
|
@ -122,7 +126,10 @@ else()
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
target_link_libraries(xlnt ${CRYPTOPP_LIBRARY} ${ZLIB_LIBRARY_RELEASE} libstudxml)
|
target_link_libraries(xlnt
|
||||||
|
PRIVATE ${CRYPTOPP_LIBRARY}
|
||||||
|
PRIVATE ${ZLIB_LIBRARY_RELEASE}
|
||||||
|
PRIVATE libstudxml)
|
||||||
|
|
||||||
target_include_directories(xlnt
|
target_include_directories(xlnt
|
||||||
PUBLIC ${XLNT_INCLUDE_DIR}
|
PUBLIC ${XLNT_INCLUDE_DIR}
|
||||||
|
|
|
@ -8,9 +8,8 @@ if(NOT COMBINED_PROJECT)
|
||||||
add_subdirectory(${LIBRARY_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR}/source)
|
add_subdirectory(${LIBRARY_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR}/source)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
set(CXXTEST_ROOT_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../third-party/cxxtest)
|
find_package(CxxTest)
|
||||||
set(CXXTEST_PYTHON_TESTGEN_EXECUTABLE ${CXXTEST_ROOT_DIR}/bin/cxxtestgen)
|
find_package(zlib)
|
||||||
set(CXXTEST_INCLUDE_DIR ${CXXTEST_ROOT_DIR})
|
|
||||||
|
|
||||||
file(GLOB CELL_TESTS ${CMAKE_CURRENT_SOURCE_DIR}/../source/cell/tests/test_*.hpp)
|
file(GLOB CELL_TESTS ${CMAKE_CURRENT_SOURCE_DIR}/../source/cell/tests/test_*.hpp)
|
||||||
file(GLOB CHARTS_TESTS ${CMAKE_CURRENT_SOURCE_DIR}/../source/charts/tests/test_*.hpp)
|
file(GLOB CHARTS_TESTS ${CMAKE_CURRENT_SOURCE_DIR}/../source/charts/tests/test_*.hpp)
|
||||||
|
@ -25,7 +24,7 @@ file(GLOB WORKSHEET_TESTS ${CMAKE_CURRENT_SOURCE_DIR}/../source/worksheet/tests/
|
||||||
|
|
||||||
set(XLNT_ZIP
|
set(XLNT_ZIP
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/../source/detail/zstream.cpp
|
${CMAKE_CURRENT_SOURCE_DIR}/../source/detail/zstream.cpp
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/../source//detail/zstream.hpp)
|
${CMAKE_CURRENT_SOURCE_DIR}/../source/detail/zstream.hpp)
|
||||||
|
|
||||||
set(TESTS ${CELL_TESTS} ${CHARTS_TESTS} ${CHARTSHEET_TESTS} ${DRAWING_TESTS}
|
set(TESTS ${CELL_TESTS} ${CHARTS_TESTS} ${CHARTSHEET_TESTS} ${DRAWING_TESTS}
|
||||||
${FORMULA_TESTS} ${PACKAGING_TESTS} ${STYLES_TESTS} ${UTILS_TESTS}
|
${FORMULA_TESTS} ${PACKAGING_TESTS} ${STYLES_TESTS} ${UTILS_TESTS}
|
||||||
|
@ -45,11 +44,14 @@ if(COVERAGE)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
add_executable(xlnt.test ${TEST_HELPERS} ${TESTS} ${RUNNER} ${XLNT_ZIP})
|
add_executable(xlnt.test ${TEST_HELPERS} ${TESTS} ${RUNNER} ${XLNT_ZIP})
|
||||||
target_link_libraries(xlnt.test xlnt)
|
target_link_libraries(xlnt.test
|
||||||
|
PRIVATE xlnt
|
||||||
|
PRIVATE ${ZLIB_LIBRARIES})
|
||||||
target_include_directories(xlnt.test
|
target_include_directories(xlnt.test
|
||||||
PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}
|
PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}
|
||||||
PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../source
|
PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../source
|
||||||
PRIVATE ${CXXTEST_INCLUDE_DIR})
|
PRIVATE ${CXXTEST_INCLUDE_DIR}
|
||||||
|
PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../third-party/libstudxml)
|
||||||
set(XLNT_TEST_DATA_DIR ${CMAKE_CURRENT_SOURCE_DIR}/data)
|
set(XLNT_TEST_DATA_DIR ${CMAKE_CURRENT_SOURCE_DIR}/data)
|
||||||
target_compile_definitions(xlnt.test PRIVATE XLNT_TEST_DATA_DIR=${XLNT_TEST_DATA_DIR})
|
target_compile_definitions(xlnt.test PRIVATE XLNT_TEST_DATA_DIR=${XLNT_TEST_DATA_DIR})
|
||||||
|
|
||||||
|
@ -73,13 +75,13 @@ if(MSVC)
|
||||||
else()
|
else()
|
||||||
set(THREADS_PREFER_PTHREAD_FLAG ON)
|
set(THREADS_PREFER_PTHREAD_FLAG ON)
|
||||||
find_package(Threads REQUIRED)
|
find_package(Threads REQUIRED)
|
||||||
target_link_libraries(xlnt.test Threads::Threads)
|
target_link_libraries(xlnt.test PRIVATE Threads::Threads)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
find_package(PythonInterp REQUIRED)
|
find_package(PythonInterp REQUIRED)
|
||||||
|
|
||||||
add_custom_command(OUTPUT ${RUNNER}
|
add_custom_command(OUTPUT ${RUNNER}
|
||||||
COMMAND ${PYTHON_EXECUTABLE} ${CXXTEST_PYTHON_TESTGEN_EXECUTABLE} --runner=ErrorPrinter -o ${RUNNER} ${TESTS}
|
COMMAND ${CXXTEST_PYTHON_TESTGEN_EXECUTABLE} --runner=ErrorPrinter -o ${RUNNER} ${TESTS}
|
||||||
DEPENDS ${TESTS}
|
DEPENDS ${TESTS}
|
||||||
COMMENT "Generating test runner ${RUNNER}")
|
COMMENT "Generating test runner ${RUNNER}")
|
||||||
|
|
||||||
|
|
61
third-party/CMakeLists.txt
vendored
61
third-party/CMakeLists.txt
vendored
|
@ -1,56 +1,11 @@
|
||||||
cmake_minimum_required(VERSION 3.2)
|
cmake_minimum_required(VERSION 3.7)
|
||||||
project(xlnt.third-party)
|
project(program)
|
||||||
|
|
||||||
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}")
|
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_SOURCE_DIR}")
|
||||||
set(LIBSTUDXML_ROOT_DIR ${CMAKE_CURRENT_SOURCE_DIR}/libstudxml)
|
add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/libstudxml)
|
||||||
|
|
||||||
set(LIBSTUDXML
|
if(BUILD_DEPS)
|
||||||
${LIBSTUDXML_ROOT_DIR}/xml/parser.cxx
|
add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/zlib)
|
||||||
${LIBSTUDXML_ROOT_DIR}/xml/qname.cxx
|
add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/cryptopp)
|
||||||
${LIBSTUDXML_ROOT_DIR}/xml/serializer.cxx
|
add_dependencies(libstudxml zlib-download cryptopp-download)
|
||||||
${LIBSTUDXML_ROOT_DIR}/xml/value-traits.cxx
|
|
||||||
${LIBSTUDXML_ROOT_DIR}/xml/content
|
|
||||||
${LIBSTUDXML_ROOT_DIR}/xml/exception
|
|
||||||
${LIBSTUDXML_ROOT_DIR}/xml/forward
|
|
||||||
${LIBSTUDXML_ROOT_DIR}/xml/parser
|
|
||||||
${LIBSTUDXML_ROOT_DIR}/xml/qname
|
|
||||||
${LIBSTUDXML_ROOT_DIR}/xml/serializer
|
|
||||||
${LIBSTUDXML_ROOT_DIR}/xml/value-traits)
|
|
||||||
|
|
||||||
set(EXPAT
|
|
||||||
${LIBSTUDXML_ROOT_DIR}/xml/details/expat/xmlparse.c
|
|
||||||
${LIBSTUDXML_ROOT_DIR}/xml/details/expat/xmlrole.c
|
|
||||||
${LIBSTUDXML_ROOT_DIR}/xml/details/expat/xmltok.c
|
|
||||||
${LIBSTUDXML_ROOT_DIR}/xml/details/expat/ascii.h
|
|
||||||
${LIBSTUDXML_ROOT_DIR}/xml/details/expat/asciitab.h
|
|
||||||
${LIBSTUDXML_ROOT_DIR}/xml/details/expat/config.h
|
|
||||||
${LIBSTUDXML_ROOT_DIR}/xml/details/expat/expat_external.h
|
|
||||||
${LIBSTUDXML_ROOT_DIR}/xml/details/expat/expat.h
|
|
||||||
${LIBSTUDXML_ROOT_DIR}/xml/details/expat/iasciitab.h
|
|
||||||
${LIBSTUDXML_ROOT_DIR}/xml/details/expat/internal.h
|
|
||||||
${LIBSTUDXML_ROOT_DIR}/xml/details/expat/latin1tab.h
|
|
||||||
${LIBSTUDXML_ROOT_DIR}/xml/details/expat/nametab.h
|
|
||||||
${LIBSTUDXML_ROOT_DIR}/xml/details/expat/utf8tab.h
|
|
||||||
${LIBSTUDXML_ROOT_DIR}/xml/details/expat/xmlrole.h
|
|
||||||
${LIBSTUDXML_ROOT_DIR}/xml/details/expat/xmltok_impl.h
|
|
||||||
${LIBSTUDXML_ROOT_DIR}/xml/details/expat/xmltok.h)
|
|
||||||
|
|
||||||
set(GENX
|
|
||||||
${LIBSTUDXML_ROOT_DIR}/xml/details/genx/char-props.c
|
|
||||||
${LIBSTUDXML_ROOT_DIR}/xml/details/genx/genx.c
|
|
||||||
${LIBSTUDXML_ROOT_DIR}/xml/details/genx/genx.h)
|
|
||||||
|
|
||||||
add_library(libstudxml STATIC ${LIBSTUDXML} ${EXPAT} ${GENX})
|
|
||||||
target_compile_definitions(libstudxml PUBLIC LIBSTUDXML_STATIC_LIB=1)
|
|
||||||
target_include_directories(libstudxml PUBLIC ${LIBSTUDXML_ROOT_DIR})
|
|
||||||
|
|
||||||
add_custom_target(libstudxml-config)
|
|
||||||
add_custom_command(TARGET libstudxml-config PRE_BUILD
|
|
||||||
COMMAND ${CMAKE_COMMAND} -E
|
|
||||||
copy ${CMAKE_CURRENT_SOURCE_DIR}/../source/detail/xml/details/config.h
|
|
||||||
${LIBSTUDXML_ROOT_DIR}/xml/details)
|
|
||||||
add_dependencies(libstudxml libstudxml-config)
|
|
||||||
|
|
||||||
if(NOT STATIC)
|
|
||||||
set_target_properties(libstudxml PROPERTIES POSITION_INDEPENDENT_CODE 1)
|
|
||||||
endif()
|
endif()
|
||||||
|
|
19
third-party/cryptopp/CMakeLists.txt
vendored
Normal file
19
third-party/cryptopp/CMakeLists.txt
vendored
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
cmake_minimum_required(VERSION 3.7)
|
||||||
|
project(cryptopp)
|
||||||
|
|
||||||
|
include(ExternalProject)
|
||||||
|
ExternalProject_Add(cryptopp-download
|
||||||
|
GIT_REPOSITORY https://github.com/weidai11/cryptopp
|
||||||
|
INSTALL_COMMAND "")
|
||||||
|
|
||||||
|
set(CRYPTOPP_ROOT_DIR ${CMAKE_CURRENT_BINARY_DIR}/cryptopp-download-prefix/src/cryptopp-download)
|
||||||
|
set(CRYPTOPP_INCLUDE_DIR ${CRYPTOPP_ROOT_DIR})
|
||||||
|
set(CRYPTOPP_BUILD_DIR ${CMAKE_CURRENT_BINARY_DIR}/cryptopp-download-prefix/src/cryptopp-download-build)
|
||||||
|
|
||||||
|
add_library(cryptopp STATIC IMPORTED)
|
||||||
|
set_property(TARGET cryptopp PROPERTY IMPORTED_LOCATION ${CRYPTOPP_BUILD_DIR}/libcryptopp.a)
|
||||||
|
add_dependencies(cryptopp cryptopp-download)
|
||||||
|
|
||||||
|
if(NOT STATIC)
|
||||||
|
set_target_properties(cryptopp PROPERTIES POSITION_INDEPENDENT_CODE 1)
|
||||||
|
endif()
|
1
third-party/cxxtest
vendored
1
third-party/cxxtest
vendored
|
@ -1 +0,0 @@
|
||||||
Subproject commit 191adddb3876ab389c0c856e1c03874bf70f8ee4
|
|
1
third-party/libstudxml
vendored
1
third-party/libstudxml
vendored
|
@ -1 +0,0 @@
|
||||||
Subproject commit 132522ca4c895e9b07d7e323d5529474806e5829
|
|
15
third-party/zlib/CMakeLists.txt
vendored
Normal file
15
third-party/zlib/CMakeLists.txt
vendored
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
cmake_minimum_required(VERSION 3.7)
|
||||||
|
project(zlib)
|
||||||
|
|
||||||
|
include(ExternalProject)
|
||||||
|
ExternalProject_Add(zlib-download
|
||||||
|
GIT_REPOSITORY https://github.com/madler/zlib
|
||||||
|
INSTALL_COMMAND "")
|
||||||
|
|
||||||
|
set(ZLIB_ROOT_DIR ${CMAKE_CURRENT_BINARY_DIR}/zlib-download-prefix/src/zlib-download)
|
||||||
|
set(ZLIB_INCLUDE_DIR ${ZLIB_ROOT_DIR})
|
||||||
|
set(ZLIB_BUILD_DIR ${CMAKE_CURRENT_BINARY_DIR}/zlib-download-prefix/src/zlib-download-build)
|
||||||
|
|
||||||
|
add_library(zlib STATIC IMPORTED)
|
||||||
|
set_property(TARGET zlib PROPERTY IMPORTED_LOCATION ${ZLIB_BUILD_DIR}/libz.a)
|
||||||
|
add_dependencies(zlib zlib-download)
|
Loading…
Reference in New Issue
Block a user