Skip to content

Commit 5219d80

Browse files
committed
Modernize CMake scripts
Add CPack support Try to remove unnecessary CMake calls
1 parent 106753b commit 5219d80

File tree

6 files changed

+47
-47
lines changed

6 files changed

+47
-47
lines changed

.github/workflows/builds.yml

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@ defaults:
1515

1616
env:
1717
VCPKG_FETCH_DEPTH: 1 # Depth to fetch vcpkg commits, must include the baseline.
18+
CMAKE_BUILD_DIR: build
19+
VCPKG_ROOT: ${{github.workspace}}/vcpkg
1820

1921
jobs:
2022
CMake:
@@ -35,6 +37,7 @@ jobs:
3537
triplet: x64-linux
3638
shared: dynamic
3739
config: Release
40+
cpack: true
3841

3942
- os: macos-14
4043
triplet: arm64-osx
@@ -44,6 +47,7 @@ jobs:
4447
triplet: arm64-osx
4548
shared: dynamic
4649
config: Release
50+
cpack: true
4751

4852
- os: windows-2022
4953
triplet: x64-windows
@@ -53,6 +57,7 @@ jobs:
5357
triplet: x64-windows
5458
shared: dynamic
5559
config: Release
60+
cpack: true
5661

5762
env:
5863
CMAKE_BUILD_DIR: build
@@ -111,6 +116,21 @@ jobs:
111116
- name: CMake test install
112117
run: |
113118
cmake --install ${{env.CMAKE_BUILD_DIR}} --config ${{matrix.config}}
119+
- name: CPack
120+
if: matrix.cpack
121+
run: |
122+
cpack --config ${{env.CMAKE_BUILD_DIR}}/CPackConfig.cmake --verbose
123+
- name: Upload CPack
124+
if: matrix.cpack
125+
uses: actions/upload-artifact@v4
126+
with:
127+
name: cpack-dist-${{ matrix.triplet }}
128+
path: |
129+
*.zip
130+
*.tar.*
131+
retention-days: 3
132+
compression-level: 0
133+
if-no-files-found: error
114134

115135
coverage:
116136
runs-on: ${{ matrix.os }}

.vscode/cspell.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,7 @@
8484
"CONTENTVERSION",
8585
"contextdata",
8686
"cottog",
87+
"cpack",
8788
"CPPDEFINES",
8889
"CRGB",
8990
"CRGBRGB",

CMakeLists.txt

Lines changed: 10 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
cmake_minimum_required (VERSION 3.13...3.21)
1+
cmake_minimum_required(VERSION 3.23...4.0)
22

33
if(NOT DEFINED CMAKE_TOOLCHAIN_FILE)
44
set(CMAKE_TOOLCHAIN_FILE
@@ -34,46 +34,20 @@ if(CONAN_FILE)
3434
conan_basic_setup(TARGETS)
3535
endif()
3636

37-
if(NOT CMAKE_INSTALL_BINDIR)
38-
set(CMAKE_INSTALL_BINDIR "bin" CACHE STRING "")
39-
endif()
40-
if(NOT CMAKE_INSTALL_LIBDIR)
41-
set(CMAKE_INSTALL_LIBDIR "lib" CACHE STRING "")
42-
endif()
43-
if(NOT CMAKE_INSTALL_DATAROOTDIR)
44-
set(CMAKE_INSTALL_DATAROOTDIR "share" CACHE STRING "")
45-
endif()
46-
if(NOT CMAKE_INSTALL_INCLUDEDIR)
47-
set(CMAKE_INSTALL_INCLUDEDIR "include" CACHE STRING "")
48-
endif()
49-
50-
if(NOT CMAKE_ARCHIVE_OUTPUT_DIRECTORY)
51-
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/lib")
52-
endif()
53-
if(NOT CMAKE_LIBRARY_OUTPUT_DIRECTORY)
54-
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/bin")
55-
endif()
56-
if(NOT CMAKE_RUNTIME_OUTPUT_DIRECTORY)
57-
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/bin")
58-
endif()
59-
60-
add_library(${PROJECT_NAME})
61-
add_library(${PROJECT_NAME}::${PROJECT_NAME} ALIAS ${PROJECT_NAME})
6237
add_subdirectory(src)
6338

64-
set_target_properties(${PROJECT_NAME} PROPERTIES
65-
C_VISIBILITY_PRESET hidden
66-
CXX_VISIBILITY_PRESET hidden
67-
VISIBILITY_INLINES_HIDDEN OFF
68-
VERSION ${PROJECT_VERSION}
69-
SOVERSION ${PROJECT_VERSION_MAJOR}
70-
)
71-
72-
set(VCPKG_MANIFEST_NO_DEFAULT_FEATURES ON)
73-
7439
if(LIBTCODFOV_TESTS)
7540
add_subdirectory(tests)
7641
endif()
7742
if(LIBTCODFOV_TOOLS)
7843
add_subdirectory(src/fovtool)
7944
endif()
45+
46+
if (WIN32)
47+
set(CPACK_GENERATOR "ZIP")
48+
else()
49+
set(CPACK_GENERATOR "TGZ")
50+
endif()
51+
set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/LICENSE.txt")
52+
set(CPACK_RESOURCE_FILE_README "${CMAKE_CURRENT_SOURCE_DIR}/README.md")
53+
include(CPack)

src/CMakeLists.txt

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,23 @@
1-
cmake_minimum_required (VERSION 3.13...3.21)
1+
cmake_minimum_required(VERSION 3.23...4.0)
2+
3+
add_library(${PROJECT_NAME})
4+
add_library(${PROJECT_NAME}::${PROJECT_NAME} ALIAS ${PROJECT_NAME})
25

36
target_compile_features(${PROJECT_NAME} PUBLIC c_std_99 cxx_std_17)
4-
set_property(TARGET ${PROJECT_NAME} PROPERTY C_STANDARD 99)
5-
set_property(TARGET ${PROJECT_NAME} PROPERTY CXX_STANDARD 17)
6-
set_property(TARGET ${PROJECT_NAME} PROPERTY C_STANDARD_REQUIRED TRUE)
7-
set_property(TARGET ${PROJECT_NAME} PROPERTY CXX_STANDARD_REQUIRED TRUE)
7+
set_target_properties(${PROJECT_NAME} PROPERTIES
8+
C_STANDARD 99
9+
CXX_STANDARD 17
10+
C_STANDARD_REQUIRED TRUE
11+
CXX_STANDARD_REQUIRED TRUE
12+
C_VISIBILITY_PRESET hidden
13+
CXX_VISIBILITY_PRESET hidden
14+
VISIBILITY_INLINES_HIDDEN OFF
15+
VERSION ${PROJECT_VERSION}
16+
)
817

918
target_include_directories(${PROJECT_NAME} PRIVATE
1019
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/../include/libtcod-fov>
1120
)
12-
1321
target_include_directories(${PROJECT_NAME} INTERFACE
1422
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/../include>
1523
)

src/fovtool/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
cmake_minimum_required (VERSION 3.13...3.21)
1+
cmake_minimum_required(VERSION 3.23...4.0)
22

33
project(
44
fovtool

tests/CMakeLists.txt

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
cmake_minimum_required (VERSION 3.13...3.21)
1+
cmake_minimum_required(VERSION 3.23...4.0)
22
project(PackageTest CXX)
33

44
set(_IMPORT_CHECK_TARGETS "") # Suppress undefined variable in Catch2Targets.cmake.
@@ -17,9 +17,6 @@ add_executable(unittest unittest.cpp ${SRC_FILES})
1717
target_link_libraries(unittest libtcod-fov::libtcod-fov Catch2::Catch2 Catch2::Catch2WithMain)
1818
target_compile_features(unittest PUBLIC cxx_std_20)
1919
target_compile_definitions(unittest PRIVATE CATCH_CONFIG_ENABLE_BENCHMARKING)
20-
if (MSVC)
21-
target_compile_options(unittest PRIVATE /utf-8)
22-
endif()
2320

2421
if(MSVC)
2522
target_compile_options(unittest PRIVATE /W4)

0 commit comments

Comments
 (0)