CMake
This commit is contained in:
@@ -2,57 +2,70 @@ project(siadrive)
|
||||
include(ExternalProject)
|
||||
cmake_minimum_required(VERSION 3.3)
|
||||
|
||||
if (NOT DEFINED CMAKE_BUILD_TYPE)
|
||||
set(CMAKE_BUILD_TYPE Debug)
|
||||
endif()
|
||||
|
||||
#Common Configuration Pre-setup
|
||||
set(EXTERNAL_BUILD_ROOT ${CMAKE_BINARY_DIR}/external)
|
||||
set(EXTERNAL_BUILD_TYPE ${CMAKE_BUILD_TYPE})
|
||||
set(3RD_PARTY_INCLUDES ${CMAKE_CURRENT_SOURCE_DIR}/3rd-party/ttmath-0.9.3)
|
||||
set(COMMON_INCLUDES ${CMAKE_CURRENT_SOURCE_DIR}/include/siadrive_api)
|
||||
add_definitions(-DTTMATH_NOASM)
|
||||
|
||||
|
||||
#SiaDrive API Library
|
||||
file(GLOB_RECURSE SIADRIVE_API_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/src/siadrive_api/*.cpp ${CMAKE_CURRENT_SOURCE_DIR}/src/siadrive_api/*.cxx ${CMAKE_CURRENT_SOURCE_DIR}/src/siadrive_api/*.c)
|
||||
file(GLOB_RECURSE SIADRIVE_API_SOURCES
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/src/siadrive_api/*.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/src/siadrive_api/*.cxx
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/src/siadrive_api/*.c)
|
||||
|
||||
add_library(siadrive.api SHARED ${SIADRIVE_API_SOURCES})
|
||||
set_target_properties(siadrive.api
|
||||
PROPERTIES COMPILE_FLAGS -DSIADRIVE_EXPORT_SYMBOLS
|
||||
)
|
||||
if (MSVC OR MINGW)
|
||||
set(3RD_PARTY_INCLUDES ${3RD_PARTY_INCLUDES} ${EXTERNAL_BUILD_ROOT}/include)
|
||||
target_link_libraries(siadrive.api Shlwapi.lib Ws2_32.lib crypt32.lib winmm.lib)
|
||||
endif()
|
||||
|
||||
if (MSVC)
|
||||
ExternalProject_Add(curl_project
|
||||
URL https://github.com/curl/curl/archive/curl-7_53_1.tar.gz
|
||||
PREFIX ${CMAKE_BINARY_DIR}/external/builds/curl
|
||||
CMAKE_ARGS -DCURL_STATICLIB=ON -DBUILD_TESTING=OFF -DBUILD_CURL_EXE=OFF -DCURL_DISABLE_LDAP=ON -DCMAKE_INSTALL_PREFIX=${CMAKE_BINARY_DIR}/external/)
|
||||
URL https://github.com/curl/curl/archive/curl-7_53_1.tar.gz
|
||||
PREFIX ${EXTERNAL_BUILD_ROOT}/builds/curl
|
||||
CMAKE_ARGS -DCMAKE_BUILD_TYPE=${EXTERNAL_BUILD_TYPE} -DCURL_STATICLIB=ON -DBUILD_TESTING=OFF -DBUILD_CURL_EXE=OFF -DCURL_DISABLE_LDAP=ON -DCMAKE_INSTALL_PREFIX=${EXTERNAL_BUILD_ROOT})
|
||||
|
||||
ExternalProject_Add(sqlitecpp_project
|
||||
URL https://github.com/SRombauts/SQLiteCpp/archive/2.0.0.tar.gz
|
||||
PREFIX ${CMAKE_BINARY_DIR}/external/builds/sqlitecpp
|
||||
CMAKE_ARGS -DSQLITECPP_RUN_CPPLINT=OFF -DSQLITECPP_RUN_CPPCHECK=OFF
|
||||
INSTALL_COMMAND cmake -E echo "Skipping install step.")
|
||||
URL https://github.com/SRombauts/SQLiteCpp/archive/2.0.0.tar.gz
|
||||
PREFIX ${EXTERNAL_BUILD_ROOT}/builds/sqlitecpp
|
||||
CMAKE_ARGS -DCMAKE_BUILD_TYPE=${EXTERNAL_BUILD_TYPE} -DSQLITECPP_RUN_CPPLINT=OFF -DSQLITECPP_RUN_CPPCHECK=OFF
|
||||
INSTALL_COMMAND cmake -E echo "Skipping install step.")
|
||||
|
||||
add_definitions(-DCURL_STATICLIB=ON -DCURL_DISABLE_LDAP=ON)
|
||||
add_dependencies(siadrive.api curl_project sqlitecpp_project)
|
||||
|
||||
set(3RD_PARTY_INCLUDES ${3RD_PARTY_INCLUDES} ${CMAKE_BINARY_DIR}/external/include ${CMAKE_BINARY_DIR}/external/builds/sqlitecpp/src/sqlitecpp_project/sqlite3 ${CMAKE_BINARY_DIR}/external/builds/sqlitecpp/src/sqlitecpp_project/include/)
|
||||
target_include_directories(siadrive.api PUBLIC
|
||||
${EXTERNAL_BUILD_ROOT}/builds/sqlitecpp/src/sqlitecpp_project/sqlite3
|
||||
${EXTERNAL_BUILD_ROOT}/builds/sqlitecpp/src/sqlitecpp_project/include/)
|
||||
|
||||
target_link_libraries(siadrive.api
|
||||
${CMAKE_BINARY_DIR}/external/lib/libcurl.lib
|
||||
${CMAKE_BINARY_DIR}/external/builds/sqlitecpp/src/sqlitecpp_project-build/sqlite3/${CMAKE_BUILD_TYPE}/sqlite3.lib
|
||||
${CMAKE_BINARY_DIR}/external/builds/sqlitecpp/src/sqlitecpp_project-build/${CMAKE_BUILD_TYPE}/SQLiteCpp.lib)
|
||||
${EXTERNAL_BUILD_ROOT}/lib/libcurl.lib
|
||||
${EXTERNAL_BUILD_ROOT}/builds/sqlitecpp/src/sqlitecpp_project-build/sqlite3/${CMAKE_BUILD_TYPE}/sqlite3.lib
|
||||
${EXTERNAL_BUILD_ROOT}/builds/sqlitecpp/src/sqlitecpp_project-build/${CMAKE_BUILD_TYPE}/SQLiteCpp.lib)
|
||||
endif()
|
||||
|
||||
if (MSVC OR MINGW)
|
||||
#Sia Dokan
|
||||
file(GLOB_RECURSE SIADRIVE_DOKAN_API_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/src/siadrive_dokan_api/*.cpp ${CMAKE_CURRENT_SOURCE_DIR}/src/siadrive_dokan_api/*.cxx ${CMAKE_CURRENT_SOURCE_DIR}/src/siadrive_dokan_api/*.c)
|
||||
file(GLOB_RECURSE SIADRIVE_DOKAN_API_SOURCES
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/src/siadrive_dokan_api/*.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/src/siadrive_dokan_api/*.cxx
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/src/siadrive_dokan_api/*.c)
|
||||
|
||||
add_library(siadrive.dokan.api SHARED ${SIADRIVE_DOKAN_API_SOURCES})
|
||||
add_dependencies(siadrive.dokan.api siadrive.api)
|
||||
set_target_properties(siadrive.dokan.api
|
||||
PROPERTIES COMPILE_FLAGS -DSIADRIVE_EXPORT_SYMBOLS
|
||||
)
|
||||
)
|
||||
target_include_directories(siadrive.dokan.api PUBLIC
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/3rd-party/Dokan\ Library-1.0.2/include/dokan
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/include/siadrive_dokan_api)
|
||||
target_link_libraries(siadrive.dokan.api siadrive.api ${CMAKE_CURRENT_SOURCE_DIR}/3rd-party/Dokan\ Library-1.0.2/lib/dokan1.lib)
|
||||
set(3RD_PARTY_INCLUDES ${3RD_PARTY_INCLUDES} ${CMAKE_CURRENT_SOURCE_DIR}/3rd-party/Dokan\ Library-1.0.2/include/dokan ${CMAKE_CURRENT_SOURCE_DIR}/include/siadrive_dokan_api)
|
||||
endif()
|
||||
|
||||
|
||||
|
@@ -4,7 +4,7 @@ mkdir build\debug
|
||||
pushd build\debug
|
||||
|
||||
cmake -G "Visual Studio 14 2015 Win64" -DCMAKE_BUILD_TYPE=Debug ..\..
|
||||
cmake --build .
|
||||
cmake --build . --config Debug
|
||||
|
||||
pause
|
||||
popd
|
@@ -4,7 +4,7 @@ mkdir build\release
|
||||
pushd build\release
|
||||
|
||||
cmake -G "Visual Studio 14 2015 Win64" -DCMAKE_BUILD_TYPE=Release ..\..
|
||||
cmake --build .
|
||||
cmake --build . --config Release
|
||||
|
||||
pause
|
||||
popd
|
Reference in New Issue
Block a user