Skip to content

Commit f65faf6

Browse files
committed
add CMake build support
1 parent 8c9747c commit f65faf6

File tree

2 files changed

+101
-0
lines changed

2 files changed

+101
-0
lines changed

CMakeLists.txt

Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
cmake_minimum_required(VERSION 3.20)
2+
3+
project(
4+
davegnukem
5+
LANGUAGES CXX
6+
VERSION 1.0.3)
7+
8+
set(CMAKE_CXX_STANDARD 14)
9+
10+
include(GNUInstallDirs)
11+
include(FetchContent)
12+
13+
# default to same version for data repo
14+
set(DATA_TAG
15+
${PROJECT_VERSION}
16+
CACHE STRING "default")
17+
18+
FetchContent_Declare(
19+
data
20+
GIT_REPOSITORY https://github.com/davidjoffe/gnukem_data
21+
GIT_TAG ${DATA_TAG})
22+
23+
# default to same version for datasrc repo
24+
set(DATASRC_TAG
25+
${PROJECT_VERSION}
26+
CACHE STRING "default")
27+
28+
FetchContent_Declare(
29+
datasrc
30+
GIT_REPOSITORY https://github.com/davidjoffe/gnukem_datasrc
31+
GIT_TAG ${DATASRC_TAG})
32+
33+
FetchContent_MakeAvailable(data datasrc)
34+
35+
add_subdirectory(src)
36+
37+
install(FILES debian/appstream/com.djoffe.davegnukem.metainfo.xml
38+
DESTINATION ${CMAKE_INSTALL_DATADIR}/metainfo)
39+
install(FILES debian/desktop/davegnukem.desktop
40+
DESTINATION ${CMAKE_INSTALL_DATADIR}/applications)
41+
install(DIRECTORY debian/icons DESTINATION ${CMAKE_INSTALL_DATADIR})
42+
install(FILES HISTORY.txt README.md DESTINATION ${CMAKE_INSTALL_DOCDIR})
43+
44+
install(DIRECTORY locale DESTINATION ${CMAKE_INSTALL_DATADIR}/${PROJECT_NAME})
45+
46+
install(
47+
DIRECTORY ${data_SOURCE_DIR}/
48+
DESTINATION ${CMAKE_INSTALL_DATADIR}/${PROJECT_NAME}
49+
PATTERN .git EXCLUDE
50+
PATTERN .gitignore EXCLUDE
51+
PATTERN README.md EXCLUDE PERMISSIONS OWNER_WRITE OWNER_READ GROUP_READ
52+
WORLD_READ)
53+
install(FILES ${data_SOURCE_DIR}/README.md
54+
DESTINATION ${CMAKE_INSTALL_DOCDIR}-data)
55+
56+
install(
57+
DIRECTORY ${datasrc_SOURCE_DIR}/
58+
DESTINATION ${CMAKE_INSTALL_DATADIR}/${PROJECT_NAME}
59+
PATTERN .git EXCLUDE
60+
PATTERN .gitignore EXCLUDE
61+
PATTERN README.md EXCLUDE
62+
PATTERN "*.psd" EXCLUDE)
63+
install(FILES ${datasrc_SOURCE_DIR}/README.md
64+
DESTINATION ${CMAKE_INSTALL_DOCDIR}-datasrc)
65+
66+
file(READ debian/davegnukem.6 TEXT)
67+
string(REPLACE "VERSION" "${PROJECT_VERSION}" TEXT "${TEXT}")
68+
file(
69+
GENERATE
70+
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/davegnukem.6
71+
CONTENT "${TEXT}")
72+
set_property(
73+
DIRECTORY
74+
APPEND
75+
PROPERTY CMAKE_CONFIGURE_DEPENDS main.cpp)
76+
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/davegnukem.6
77+
DESTINATION ${CMAKE_INSTALL_MANDIR}/man6)

src/CMakeLists.txt

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
file(GLOB_RECURSE HEADERS "*.h")
2+
file(GLOB SOURCES "*.cpp")
3+
file(GLOB SOURCES_LOC "localization/*.cpp")
4+
file(GLOB SOURCES_SDL "sdl/*.cpp")
5+
6+
if(WIN32)
7+
file(GLOB SOURCES_WIN "win32/*.cpp")
8+
list(APPEND SOURCES ${SOURCES_WIN})
9+
endif()
10+
11+
find_package(SDL2 REQUIRED)
12+
find_package(SDL2_ttf REQUIRED)
13+
find_package(SDL2_image REQUIRED)
14+
find_package(SDL2_mixer REQUIRED)
15+
16+
add_executable(${PROJECT_NAME} WIN32 MACOSX_BUNDLE
17+
${HEADERS} ${SOURCES} ${SOURCES_LOC} ${SOURCES_SDL})
18+
target_compile_definitions(
19+
${PROJECT_NAME}
20+
PRIVATE DATA_DIR="${CMAKE_INSTALL_FULL_DATADIR}/${PROJECT_NAME}")
21+
target_link_libraries(
22+
${PROJECT_NAME} PRIVATE SDL2::SDL2 SDL2_ttf::SDL2_ttf SDL2_image::SDL2_image
23+
SDL2_mixer::SDL2_mixer)
24+
install(TARGETS ${PROJECT_NAME})

0 commit comments

Comments
 (0)