57 lines
1.7 KiB
CMake
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}) |