Files
ReArchive/CMakeLists.txt

57 lines
1.7 KiB
CMake

cmake_minimum_required(VERSION 3.18..3.28)
set(ArchiveProjectVersion 1.1) # The current revision of the project.
set(ArchiveFormatVersion 1.0) # The current version of Redacted Software Archive specification.
set(ArchiveAppVersion 1.1) # The current version of rsarchive.exe
project(ReArchive
VERSION ${ArchiveProjectVersion}
LANGUAGES CXX)
if (PROJECT_SOURCE_DIR STREQUAL PROJECT_BINARY_DIR)
message(FATAL_ERROR "In-source builds are not allowed")
endif()
set(CMAKE_CXX_STANDARD 20)
file(GLOB_RECURSE HEADERS "include/*.h" "include/*.hpp")
file(GLOB_RECURSE SOURCES "src/*.c" "src/*.cpp")
if(UNIX)
add_library(ReArchive SHARED ${SOURCES})
endif()
if(WIN32)
add_library(ReArchive STATIC ${SOURCES})
endif()
include(cmake/CPM.cmake)
CPMAddPackage(NAME mcolor
URL https://git.redacted.cc/maxine/mcolor/archive/Release-1.zip)
target_compile_definitions(ReArchive PUBLIC ARCHIVE_PROJECT_VERSION=${ArchiveProjectVersion})
target_compile_definitions(ReArchive PUBLIC ARCHIVE_FORMAT_VERSION=${ArchiveFormatVersion})
set_target_properties(ReArchive PROPERTIES LINKER_LANGUAGE CXX)
target_include_directories(ReArchive PUBLIC ${PROJECT_SOURCE_DIR}/include)
add_executable(rsarchive main.cpp)
target_compile_definitions(rsarchive PRIVATE ARCHIVE_APP_VERSION=${ArchiveAppVersion})
target_include_directories(rsarchive PUBLIC ${mcolor_SOURCE_DIR}/include)
target_link_libraries(rsarchive PUBLIC ReArchive mcolor)
if(NOT CMAKE_BUILD_TYPE)
set(CMAKE_BUILD_TYPE Release CACHE STRING "Choose the build type" FORCE)
endif()
include(GNUInstallDirs)
set(CMAKE_INSTALL_PREFIX "/usr" CACHE PATH "Install path prefix" FORCE)
install(TARGETS ReArchive DESTINATION ${CMAKE_INSTALL_LIBDIR})
install(TARGETS rsarchive DESTINATION ${CMAKE_INSTALL_BINDIR})