add CMakeLists in root directory to simplify build configuration

This commit is contained in:
mlangkabel
2018-12-11 14:43:48 +01:00
parent 722772bd9a
commit b7f79fc1f5
6 changed files with 51 additions and 117 deletions
-1
View File
@@ -1 +0,0 @@
/build/
+11 -53
View File
@@ -1,32 +1,7 @@
cmake_minimum_required (VERSION 2.6)
set(PROJECT_NAME "SourcetrailDBBindingsPython")
set(LIB_BINDINGS_PYTHON "lib_bindings_python")
set(PACKAGE_NAME "sourcetraildb")
set(LIB_NAME "_${PACKAGE_NAME}")
project(${PROJECT_NAME})
# check for current architecture
if (NOT "${CMAKE_GENERATOR}" MATCHES "(Win64|IA64)")
set(ARCH 32)
else()
set(ARCH 64)
endif()
# configure default build type to Release
set(CMAKE_BUILD_TYPE_INIT "Release")
# configure the output directory
if (UNIX)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}/build/${ARCH}bit/${CMAKE_BUILD_TYPE}/")
else ()
foreach(OUTPUTCONFIG ${CMAKE_CONFIGURATION_TYPES})
string( TOUPPER ${OUTPUTCONFIG} UPPER_OUTPUTCONFIG )
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY_${UPPER_OUTPUTCONFIG} "${CMAKE_SOURCE_DIR}/build/${ARCH}bit/${OUTPUTCONFIG}/")
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY_${UPPER_OUTPUTCONFIG} "${CMAKE_SOURCE_DIR}/build/${ARCH}bit/${OUTPUTCONFIG}/")
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_${UPPER_OUTPUTCONFIG} "${CMAKE_SOURCE_DIR}/build/${ARCH}bit/${OUTPUTCONFIG}/")
endforeach(OUTPUTCONFIG CMAKE_CONFIGURATION_TYPES)
endif ()
# --- Find Python ---
@@ -45,25 +20,10 @@ message(STATUS "Found Python include dirs: ${PYTHON_INCLUDE_DIRS}")
message(STATUS "Found Python libraries: ${PYTHON_LIBRARIES}")
# --- Find Core ---
if (NOT EXISTS "${CORE_INCLUDE_DIRS}")
message(STATUS "Core include dir \"${CORE_INCLUDE_DIRS}\" does not exist, trying to find Core automatically.")
set(CORE_INCLUDE_DIRS "${CMAKE_SOURCE_DIR}/../core/include" CACHE FILEPATH "path to core include directory")
message(STATUS "Set Core include dir to \"${CORE_INCLUDE_DIRS}\".")
endif ()
if (NOT EXISTS "${CORE_LIBRARIES}")
message(STATUS "Core library \"${CORE_LIBRARIES}\" does not exist, trying to find Core automatically.")
set(CORE_LIBRARIES "${CMAKE_SOURCE_DIR}/../core/build/${ARCH}bit/Release/sourcetraildb.lib" CACHE FILEPATH "path to core library directory")
message(STATUS "Set Core library to \"${CORE_LIBRARIES}\".")
endif ()
# --- Setup Paths ---
set(RESOURCES_SWIG_DIR "${CMAKE_SOURCE_DIR}/../resources_swig")
set(GENERATED_SRC_DIR "${CMAKE_BINARY_DIR}/src")
set(RESOURCES_SWIG_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../resources_swig")
set(GENERATED_SRC_DIR "${CMAKE_CURRENT_BINARY_DIR}/src")
set(SWIG_INTERFACE_FILE "${RESOURCES_SWIG_DIR}/interface/${PACKAGE_NAME}.i")
set(GENERATED_WRAPPER_FILE "${GENERATED_SRC_DIR}/${PACKAGE_NAME}_wrap.cxx")
@@ -85,24 +45,22 @@ set(HDR_FILES
# --- Configure Target ---
add_library(${LIB_NAME} SHARED ${SRC_FILES} ${HDR_FILES} ${SWIG_INTERFACE_FILE})
add_library(${LIB_BINDINGS_PYTHON} SHARED ${SRC_FILES} ${HDR_FILES} ${SWIG_INTERFACE_FILE})
set_target_properties(${LIB_NAME} PROPERTIES SUFFIX ".pyd")
set_target_properties(${LIB_BINDINGS_PYTHON} PROPERTIES OUTPUT_NAME "_${PACKAGE_NAME}")
set_target_properties(${LIB_BINDINGS_PYTHON} PROPERTIES SUFFIX ".pyd")
add_custom_command(
TARGET ${LIB_NAME}
TARGET ${LIB_BINDINGS_PYTHON}
PRE_BUILD
COMMAND if not exist \"${GENERATED_SRC_DIR}\" mkdir \"${GENERATED_SRC_DIR}\" \n swig -c++ -python -I${RESOURCES_SWIG_DIR}/include -o ${GENERATED_WRAPPER_FILE} -outdir ${CMAKE_SOURCE_DIR}/build/${ARCH}bit/$(CONFIGURATION) ${SWIG_INTERFACE_FILE}
COMMAND if not exist \"${GENERATED_SRC_DIR}\" mkdir \"${GENERATED_SRC_DIR}\" \n swig -c++ -python -I${RESOURCES_SWIG_DIR}/include -o ${GENERATED_WRAPPER_FILE} -outdir ${CMAKE_CURRENT_BINARY_DIR}/$(CONFIGURATION) ${SWIG_INTERFACE_FILE}
COMMENT "Generating wrapper code file."
)
target_include_directories(${LIB_NAME} PUBLIC
target_include_directories(${LIB_BINDINGS_PYTHON} PUBLIC
"${RESOURCES_SWIG_DIR}/include"
"${CORE_INCLUDE_DIRS}"
"${CORE_SOURCE_DIR}/include"
${PYTHON_INCLUDE_DIRS}
)
message("CORE_RELEASE_LIBRARY: ${CORE_LIBRARIES}")
target_link_libraries(${LIB_NAME} ${PYTHON_LIBRARIES})
target_link_libraries(${LIB_NAME} ${CORE_LIBRARIES})
target_link_libraries(${LIB_BINDINGS_PYTHON} ${PYTHON_LIBRARIES} ${LIB_CORE})