Refactored cmake scripts and test cases compile database handling
This commit is contained in:
83
src/CMakeLists.txt
Normal file
83
src/CMakeLists.txt
Normal file
@@ -0,0 +1,83 @@
|
||||
#
|
||||
# Configure clang-uml executable version
|
||||
#
|
||||
file(MAKE_DIRECTORY ${PROJECT_BINARY_DIR}/src/version)
|
||||
configure_file(${CMAKE_CURRENT_LIST_DIR}/version.h.in
|
||||
${PROJECT_BINARY_DIR}/src/version/version.h)
|
||||
|
||||
#
|
||||
# Generate source list dynamically
|
||||
#
|
||||
file(GLOB_RECURSE SOURCES ${CMAKE_CURRENT_LIST_DIR}/*.cc)
|
||||
set(MAIN_SOURCE_FILE ${CMAKE_CURRENT_LIST_DIR}/main.cc)
|
||||
list(REMOVE_ITEM SOURCES ${MAIN_SOURCE_FILE})
|
||||
|
||||
#
|
||||
# Define library target for linking with test cases and output executable
|
||||
#
|
||||
if(MSVC)
|
||||
add_library(clang-umllib STATIC ${SOURCES})
|
||||
set(MSVC_LIBRARIES "version")
|
||||
else(MSVC)
|
||||
add_library(clang-umllib OBJECT ${SOURCES})
|
||||
endif(MSVC)
|
||||
|
||||
target_compile_options(clang-umllib PUBLIC
|
||||
$<$<OR:$<CXX_COMPILER_ID:Clang>,$<CXX_COMPILER_ID:GNU>>:
|
||||
-Werror -Wall -Wextra -Wno-unused-parameter -Wno-unused-private-field>
|
||||
$<$<CXX_COMPILER_ID:MSVC>:
|
||||
/W1 /std:c++17 /bigobj /wd4291 /wd4624 /wd4244 /NODEFAULTLIB:MSVCRT
|
||||
/NODEFAULTLIB:MSVCRTD>)
|
||||
target_compile_definitions(clang-umllib PUBLIC
|
||||
$<$<CXX_COMPILER_ID:MSVC>:
|
||||
-DLLVM_FORCE_USE_OLD_TOOLCHAIN>)
|
||||
|
||||
#
|
||||
# Define the target executable clang-uml
|
||||
#
|
||||
add_executable(clang-uml ${MAIN_SOURCE_FILE})
|
||||
|
||||
target_link_libraries(clang-uml
|
||||
${YAML_CPP_LIBRARIES}
|
||||
${LIBTOOLING_LIBS}
|
||||
${MSVC_LIBRARIES}
|
||||
clang-umllib
|
||||
Threads::Threads)
|
||||
|
||||
#
|
||||
# Setup install options
|
||||
#
|
||||
include(GNUInstallDirs)
|
||||
|
||||
install(TARGETS clang-uml DESTINATION ${CMAKE_INSTALL_BINDIR})
|
||||
install(FILES LICENSE.md DESTINATION ${CMAKE_INSTALL_DOCDIR})
|
||||
install(FILES README.md DESTINATION ${CMAKE_INSTALL_DOCDIR})
|
||||
install(FILES AUTHORS.md DESTINATION ${CMAKE_INSTALL_DOCDIR})
|
||||
install(FILES CHANGELOG.md DESTINATION ${CMAKE_INSTALL_DOCDIR})
|
||||
|
||||
#
|
||||
# Setup installer
|
||||
#
|
||||
set(CPACK_PACKAGE_NAME "clang-uml")
|
||||
set(CPACK_PACKAGE_VENDOR "Bartek Kryza <bkryza@gmail.com>")
|
||||
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY
|
||||
"clang-uml - C++ UML diagram generator based on Clang")
|
||||
set(CPACK_PACKAGE_VERSION "${GIT_VERSION}")
|
||||
set(CPACK_PACKAGE_VERSION_MAJOR "${GIT_VERSION_MAJOR}")
|
||||
set(CPACK_PACKAGE_VERSION_MINOR "${GIT_VERSION_MINOR}")
|
||||
set(CPACK_PACKAGE_VERSION_PATCH "${GIT_VERSION_PATCH}")
|
||||
set(CPACK_PACKAGE_INSTALL_DIRECTORY "clang-uml")
|
||||
set(CPACK_RESOURCE_FILE_LICENSE ${PROJECT_SOURCE_DIR}/LICENSE.md)
|
||||
|
||||
if(MSVC)
|
||||
set(CPACK_GENERATOR "NSIS")
|
||||
set(CPACK_NSIS_ENABLE_UNINSTALL_BEFORE_INSTALL ON)
|
||||
set(CPACK_NSIS_DISPLAY_NAME "clang-uml")
|
||||
set(CPACK_NSIS_HELP_LINK "https://github.com/bkryza/clang-uml")
|
||||
set(CPACK_NSIS_URL_INFO_ABOUT "https://github.com/bkryza/clang-uml")
|
||||
set(CPACK_NSIS_CONTACT "Bartek Kryza <bkryza@gmail.com>")
|
||||
set(CPACK_NSIS_MODIFY_PATH ON)
|
||||
set(CPACK_SOURCE_GENERATOR "ZIP")
|
||||
endif(MSVC)
|
||||
|
||||
include(CPack)
|
||||
Reference in New Issue
Block a user