update cmake
This commit is contained in:
+87
-98
@@ -2,16 +2,15 @@ cmake_minimum_required(VERSION 3.27)
|
|||||||
project(anm2ed LANGUAGES C CXX)
|
project(anm2ed LANGUAGES C CXX)
|
||||||
|
|
||||||
if(WIN32 AND DEFINED ENV{VCPKG_ROOT} AND NOT DEFINED CMAKE_TOOLCHAIN_FILE)
|
if(WIN32 AND DEFINED ENV{VCPKG_ROOT} AND NOT DEFINED CMAKE_TOOLCHAIN_FILE)
|
||||||
set(CMAKE_TOOLCHAIN_FILE "$ENV{VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake"
|
set(CMAKE_TOOLCHAIN_FILE
|
||||||
|
"$ENV{VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake"
|
||||||
CACHE STRING "Vcpkg toolchain file")
|
CACHE STRING "Vcpkg toolchain file")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
|
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
|
||||||
if(CMAKE_EXPORT_COMPILE_COMMANDS AND NOT WIN32)
|
if(CMAKE_EXPORT_COMPILE_COMMANDS AND NOT WIN32)
|
||||||
execute_process(COMMAND ${CMAKE_COMMAND} -E create_symlink
|
execute_process(COMMAND ${CMAKE_COMMAND} -E create_symlink ${CMAKE_BINARY_DIR}/compile_commands.json
|
||||||
${CMAKE_BINARY_DIR}/compile_commands.json
|
${CMAKE_SOURCE_DIR}/compile_commands.json)
|
||||||
${CMAKE_SOURCE_DIR}/compile_commands.json
|
|
||||||
)
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
set(CMAKE_CXX_STANDARD 23)
|
set(CMAKE_CXX_STANDARD 23)
|
||||||
@@ -20,51 +19,56 @@ set(CMAKE_CXX_EXTENSIONS OFF)
|
|||||||
|
|
||||||
if(MSVC)
|
if(MSVC)
|
||||||
set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreadedDLL")
|
set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreadedDLL")
|
||||||
|
set(CMAKE_MSVC_DEBUG_INFORMATION_FORMAT "$<$<CONFIG:Debug>:ProgramDatabase>")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
set(BUILD_SHARED_LIBS OFF CACHE BOOL "" FORCE)
|
set(BUILD_SHARED_LIBS OFF CACHE BOOL "" FORCE)
|
||||||
|
|
||||||
set(SDL_STATIC ON CACHE BOOL "" FORCE)
|
macro(anm2ed_set_cache_bool name value)
|
||||||
set(SDL_SHARED OFF CACHE BOOL "" FORCE)
|
set(${name} ${value} CACHE BOOL "" FORCE)
|
||||||
|
endmacro()
|
||||||
|
|
||||||
|
anm2ed_set_cache_bool(SDL_STATIC ON)
|
||||||
|
anm2ed_set_cache_bool(SDL_SHARED OFF)
|
||||||
if(NOT WIN32)
|
if(NOT WIN32)
|
||||||
set(SDL_ALSA ON CACHE BOOL "" FORCE)
|
anm2ed_set_cache_bool(SDL_ALSA ON)
|
||||||
set(SDL_ALSA_SHARED ON CACHE BOOL "" FORCE)
|
anm2ed_set_cache_bool(SDL_ALSA_SHARED ON)
|
||||||
set(SDL_JACK ON CACHE BOOL "" FORCE)
|
anm2ed_set_cache_bool(SDL_JACK ON)
|
||||||
set(SDL_JACK_SHARED ON CACHE BOOL "" FORCE)
|
anm2ed_set_cache_bool(SDL_JACK_SHARED ON)
|
||||||
set(SDL_PIPEWIRE ON CACHE BOOL "" FORCE)
|
anm2ed_set_cache_bool(SDL_PIPEWIRE ON)
|
||||||
set(SDL_PIPEWIRE_SHARED ON CACHE BOOL "" FORCE)
|
anm2ed_set_cache_bool(SDL_PIPEWIRE_SHARED ON)
|
||||||
set(SDL_SNDIO ON CACHE BOOL "" FORCE)
|
anm2ed_set_cache_bool(SDL_SNDIO ON)
|
||||||
set(SDL_SNDIO_SHARED ON CACHE BOOL "" FORCE)
|
anm2ed_set_cache_bool(SDL_SNDIO_SHARED ON)
|
||||||
endif()
|
endif()
|
||||||
set(SDL_HAPTIC OFF CACHE BOOL "" FORCE)
|
anm2ed_set_cache_bool(SDL_HAPTIC OFF)
|
||||||
set(SDL_JOYSTICK OFF CACHE BOOL "" FORCE)
|
anm2ed_set_cache_bool(SDL_JOYSTICK OFF)
|
||||||
set(SDL_SENSOR OFF CACHE BOOL "" FORCE)
|
anm2ed_set_cache_bool(SDL_SENSOR OFF)
|
||||||
set(SDL_HIDAPI OFF CACHE BOOL "" FORCE)
|
anm2ed_set_cache_bool(SDL_HIDAPI OFF)
|
||||||
set(SDL_CAMERA OFF CACHE BOOL "" FORCE)
|
anm2ed_set_cache_bool(SDL_CAMERA OFF)
|
||||||
set(SDL_TRAY OFF CACHE BOOL "" FORCE)
|
anm2ed_set_cache_bool(SDL_TRAY OFF)
|
||||||
set(SDL_VULKAN OFF CACHE BOOL "" FORCE)
|
anm2ed_set_cache_bool(SDL_VULKAN OFF)
|
||||||
add_subdirectory(external/SDL EXCLUDE_FROM_ALL)
|
add_subdirectory(external/SDL EXCLUDE_FROM_ALL)
|
||||||
|
|
||||||
set(SDLMIXER_DEPS_SHARED OFF CACHE BOOL "" FORCE)
|
anm2ed_set_cache_bool(SDLMIXER_DEPS_SHARED OFF)
|
||||||
set(SDLMIXER_AIFF OFF CACHE BOOL "" FORCE)
|
anm2ed_set_cache_bool(SDLMIXER_AIFF OFF)
|
||||||
set(SDLMIXER_AU OFF CACHE BOOL "" FORCE)
|
anm2ed_set_cache_bool(SDLMIXER_AU OFF)
|
||||||
set(SDLMIXER_FLAC_LIBFLAC OFF CACHE BOOL "" FORCE)
|
anm2ed_set_cache_bool(SDLMIXER_FLAC_LIBFLAC OFF)
|
||||||
set(SDLMIXER_FLAC_DRFLAC OFF CACHE BOOL "" FORCE)
|
anm2ed_set_cache_bool(SDLMIXER_FLAC_DRFLAC OFF)
|
||||||
set(SDLMIXER_GME OFF CACHE BOOL "" FORCE)
|
anm2ed_set_cache_bool(SDLMIXER_GME OFF)
|
||||||
set(SDLMIXER_MOD_XMP OFF CACHE BOOL "" FORCE)
|
anm2ed_set_cache_bool(SDLMIXER_MOD_XMP OFF)
|
||||||
set(SDLMIXER_MP3_DRMP3 OFF CACHE BOOL "" FORCE)
|
anm2ed_set_cache_bool(SDLMIXER_MP3_DRMP3 OFF)
|
||||||
set(SDLMIXER_MP3_MPG123 OFF CACHE BOOL "" FORCE)
|
anm2ed_set_cache_bool(SDLMIXER_MP3_MPG123 OFF)
|
||||||
set(SDLMIXER_MIDI_FLUIDSYNTH OFF CACHE BOOL "" FORCE)
|
anm2ed_set_cache_bool(SDLMIXER_MIDI_FLUIDSYNTH OFF)
|
||||||
set(SDLMIXER_MIDI_TIMIDITY OFF CACHE BOOL "" FORCE)
|
anm2ed_set_cache_bool(SDLMIXER_MIDI_TIMIDITY OFF)
|
||||||
set(SDLMIXER_OPUS ON CACHE BOOL "" FORCE)
|
anm2ed_set_cache_bool(SDLMIXER_OPUS ON)
|
||||||
set(SDLMIXER_VOC OFF CACHE BOOL "" FORCE)
|
anm2ed_set_cache_bool(SDLMIXER_VOC OFF)
|
||||||
set(SDLMIXER_VORBIS_STB ON CACHE BOOL "" FORCE)
|
anm2ed_set_cache_bool(SDLMIXER_VORBIS_STB ON)
|
||||||
set(SDLMIXER_VORBIS_VORBISFILE OFF CACHE BOOL "" FORCE)
|
anm2ed_set_cache_bool(SDLMIXER_VORBIS_VORBISFILE OFF)
|
||||||
set(SDLMIXER_VORBIS_TREMOR OFF CACHE BOOL "" FORCE)
|
anm2ed_set_cache_bool(SDLMIXER_VORBIS_TREMOR OFF)
|
||||||
set(SDLMIXER_WAVE ON CACHE BOOL "" FORCE)
|
anm2ed_set_cache_bool(SDLMIXER_WAVE ON)
|
||||||
set(SDLMIXER_WAVPACK OFF CACHE BOOL "" FORCE)
|
anm2ed_set_cache_bool(SDLMIXER_WAVPACK OFF)
|
||||||
set(SDLMIXER_TEST OFF CACHE BOOL "" FORCE)
|
anm2ed_set_cache_bool(SDLMIXER_TEST OFF)
|
||||||
set(SDLMIXER_INSTALL OFF CACHE BOOL "" FORCE)
|
anm2ed_set_cache_bool(SDLMIXER_INSTALL OFF)
|
||||||
add_subdirectory(external/SDL_mixer EXCLUDE_FROM_ALL)
|
add_subdirectory(external/SDL_mixer EXCLUDE_FROM_ALL)
|
||||||
|
|
||||||
add_subdirectory(external/lunasvg)
|
add_subdirectory(external/lunasvg)
|
||||||
@@ -77,8 +81,7 @@ set(IMGUI_SRC
|
|||||||
external/imgui/imgui_widgets.cpp
|
external/imgui/imgui_widgets.cpp
|
||||||
external/imgui/imgui_tables.cpp
|
external/imgui/imgui_tables.cpp
|
||||||
external/imgui/backends/imgui_impl_sdl3.cpp
|
external/imgui/backends/imgui_impl_sdl3.cpp
|
||||||
external/imgui/backends/imgui_impl_opengl3.cpp
|
external/imgui/backends/imgui_impl_opengl3.cpp)
|
||||||
)
|
|
||||||
|
|
||||||
set(TINYXML2_SRC external/tinyxml2/tinyxml2.cpp)
|
set(TINYXML2_SRC external/tinyxml2/tinyxml2.cpp)
|
||||||
|
|
||||||
@@ -98,51 +101,16 @@ file(GLOB PROJECT_SRC CONFIGURE_DEPENDS
|
|||||||
src/window/*.cpp
|
src/window/*.cpp
|
||||||
src/window/*.h
|
src/window/*.h
|
||||||
src/*.cpp
|
src/*.cpp
|
||||||
src/*.h
|
src/*.h)
|
||||||
)
|
|
||||||
|
|
||||||
add_executable(${PROJECT_NAME}
|
add_executable(${PROJECT_NAME} ${GLAD_SRC} ${IMGUI_SRC} ${TINYXML2_SRC} ${PROJECT_SRC})
|
||||||
${GLAD_SRC}
|
|
||||||
${IMGUI_SRC}
|
|
||||||
${TINYXML2_SRC}
|
|
||||||
${PROJECT_SRC}
|
|
||||||
)
|
|
||||||
if (MSVC)
|
|
||||||
target_compile_options(${PROJECT_NAME} PRIVATE "$<$<COMPILE_LANGUAGE:CXX>:/std:c++latest>")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if (WIN32)
|
target_compile_definitions(${PROJECT_NAME} PRIVATE IMGUI_DISABLE_OBSOLETE_FUNCTIONS IMGUI_DEBUG_PARANOID
|
||||||
enable_language(RC)
|
IMGUI_ENABLE_DOCKING)
|
||||||
target_sources(${PROJECT_NAME} PRIVATE anm2ed.rc)
|
|
||||||
target_compile_options(${PROJECT_NAME} PRIVATE /EHsc)
|
|
||||||
target_link_options(${PROJECT_NAME} PRIVATE /STACK:0xffffff)
|
|
||||||
target_link_options(${PROJECT_NAME} PRIVATE
|
|
||||||
"$<$<AND:$<CONFIG:Release>,$<CXX_COMPILER_ID:MSVC>>:/SUBSYSTEM:WINDOWS>"
|
|
||||||
"$<$<AND:$<CONFIG:Release>,$<NOT:$<CXX_COMPILER_ID:MSVC>>>:-mwindows>"
|
|
||||||
)
|
|
||||||
else ()
|
|
||||||
target_compile_options(${PROJECT_NAME} PRIVATE
|
|
||||||
-Wall -Wextra -pedantic
|
|
||||||
)
|
|
||||||
if (CMAKE_BUILD_TYPE STREQUAL "Debug")
|
|
||||||
target_compile_definitions(${PROJECT_NAME} PRIVATE DEBUG)
|
|
||||||
target_compile_options(${PROJECT_NAME} PRIVATE -O0 -pg)
|
|
||||||
else ()
|
|
||||||
set(CMAKE_BUILD_TYPE "Release")
|
|
||||||
target_compile_options(${PROJECT_NAME} PRIVATE -Os)
|
|
||||||
endif ()
|
|
||||||
|
|
||||||
target_link_libraries(${PROJECT_NAME} PRIVATE m)
|
target_include_directories(
|
||||||
endif ()
|
${PROJECT_NAME}
|
||||||
|
PRIVATE include
|
||||||
target_compile_definitions(${PROJECT_NAME} PRIVATE
|
|
||||||
IMGUI_DISABLE_OBSOLETE_FUNCTIONS
|
|
||||||
IMGUI_DEBUG_PARANOID
|
|
||||||
IMGUI_ENABLE_DOCKING
|
|
||||||
)
|
|
||||||
|
|
||||||
target_include_directories(${PROJECT_NAME} PRIVATE
|
|
||||||
include
|
|
||||||
include/glad
|
include/glad
|
||||||
external
|
external
|
||||||
external/imgui
|
external/imgui
|
||||||
@@ -155,8 +123,36 @@ target_include_directories(${PROJECT_NAME} PRIVATE
|
|||||||
src
|
src
|
||||||
src/imgui
|
src/imgui
|
||||||
src/resource
|
src/resource
|
||||||
src/util
|
src/util)
|
||||||
)
|
|
||||||
|
if(WIN32)
|
||||||
|
enable_language(RC)
|
||||||
|
target_sources(${PROJECT_NAME} PRIVATE anm2ed.rc)
|
||||||
|
|
||||||
|
target_compile_options(${PROJECT_NAME} PRIVATE /EHsc)
|
||||||
|
target_link_options(${PROJECT_NAME} PRIVATE /STACK:0xffffff)
|
||||||
|
|
||||||
|
target_link_options(
|
||||||
|
${PROJECT_NAME}
|
||||||
|
PRIVATE "$<$<AND:$<CONFIG:Release>,$<CXX_COMPILER_ID:MSVC>>:/SUBSYSTEM:WINDOWS>"
|
||||||
|
"$<$<AND:$<CONFIG:Release>,$<NOT:$<CXX_COMPILER_ID:MSVC>>>:-mwindows>")
|
||||||
|
else()
|
||||||
|
target_compile_options(${PROJECT_NAME} PRIVATE -Wall -Wextra -pedantic)
|
||||||
|
if(CMAKE_BUILD_TYPE STREQUAL "Debug")
|
||||||
|
target_compile_definitions(${PROJECT_NAME} PRIVATE DEBUG)
|
||||||
|
target_compile_options(${PROJECT_NAME} PRIVATE -O0 -pg)
|
||||||
|
else()
|
||||||
|
set(CMAKE_BUILD_TYPE "Release")
|
||||||
|
target_compile_options(${PROJECT_NAME} PRIVATE -Os)
|
||||||
|
endif()
|
||||||
|
target_link_libraries(${PROJECT_NAME} PRIVATE m)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(MSVC)
|
||||||
|
target_compile_options(${PROJECT_NAME} PRIVATE "$<$<COMPILE_LANGUAGE:CXX>:/std:c++latest>")
|
||||||
|
target_compile_options(${PROJECT_NAME} PRIVATE "$<$<CONFIG:Debug>:/Zi>")
|
||||||
|
target_link_options(${PROJECT_NAME} PRIVATE "$<$<CONFIG:Debug>:/DEBUG>")
|
||||||
|
endif()
|
||||||
|
|
||||||
if(WIN32)
|
if(WIN32)
|
||||||
set(OPENGL_LIB opengl32)
|
set(OPENGL_LIB opengl32)
|
||||||
@@ -172,8 +168,7 @@ if (WIN32)
|
|||||||
gdi32
|
gdi32
|
||||||
user32
|
user32
|
||||||
setupapi
|
setupapi
|
||||||
legacy_stdio_definitions
|
legacy_stdio_definitions)
|
||||||
)
|
|
||||||
if(TARGET SDL3::SDL3main)
|
if(TARGET SDL3::SDL3main)
|
||||||
set(SDL_MAIN_TARGET SDL3::SDL3main)
|
set(SDL_MAIN_TARGET SDL3::SDL3main)
|
||||||
else()
|
else()
|
||||||
@@ -185,14 +180,8 @@ else ()
|
|||||||
set(SDL_MAIN_TARGET)
|
set(SDL_MAIN_TARGET)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
target_link_libraries(${PROJECT_NAME} PRIVATE
|
target_link_libraries(${PROJECT_NAME} PRIVATE ${OPENGL_LIB} SDL3-static ${SDL_MAIN_TARGET}
|
||||||
${OPENGL_LIB}
|
SDL3_mixer::SDL3_mixer lunasvg ${PLATFORM_LIBS})
|
||||||
SDL3-static
|
|
||||||
${SDL_MAIN_TARGET}
|
|
||||||
SDL3_mixer::SDL3_mixer
|
|
||||||
lunasvg
|
|
||||||
${PLATFORM_LIBS}
|
|
||||||
)
|
|
||||||
|
|
||||||
message(STATUS "System: ${CMAKE_SYSTEM_NAME}")
|
message(STATUS "System: ${CMAKE_SYSTEM_NAME}")
|
||||||
message(STATUS "Project: ${PROJECT_NAME}")
|
message(STATUS "Project: ${PROJECT_NAME}")
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
/home/anon/sda/Personal/Repos/anm2ed/build/compile_commands.json
|
/home/anon/sda/Personal/Repos/anm2ed/build-cmake-cleancheck/compile_commands.json
|
||||||
+7
-1
@@ -65,10 +65,16 @@ namespace anm2ed::anm2
|
|||||||
XMLDocument document;
|
XMLDocument document;
|
||||||
document.InsertFirstChild(to_element(document));
|
document.InsertFirstChild(to_element(document));
|
||||||
|
|
||||||
|
if (!std::filesystem::exists(path))
|
||||||
|
{
|
||||||
|
if (errorString) *errorString = localize.get(ERROR_FILE_NOT_FOUND);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
File file(path, "wb");
|
File file(path, "wb");
|
||||||
if (!file)
|
if (!file)
|
||||||
{
|
{
|
||||||
if (errorString) *errorString = localize.get(ERROR_FILE_NOT_FOUND);
|
if (errorString) *errorString = localize.get(ERROR_FILE_PERMISSIONS);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -419,6 +419,7 @@ namespace anm2ed
|
|||||||
X(TOAST_PNG_FORMAT_INVALID, "PNG format invalid. Make sure it contains \"{}\".", "Formato PNG inválido. Asegúrate de que contenga \"{}\".", "Недопустимый формат PNG. Убедитесь, что он содержит \"{}\".", "PNG 格式无效。请确保其中包含 \"{}\"。", "PNG 형식이 잘못되었습니다. \"{}\"을 포함하는지 확인하세요.") \
|
X(TOAST_PNG_FORMAT_INVALID, "PNG format invalid. Make sure it contains \"{}\".", "Formato PNG inválido. Asegúrate de que contenga \"{}\".", "Недопустимый формат PNG. Убедитесь, что он содержит \"{}\".", "PNG 格式无效。请确保其中包含 \"{}\"。", "PNG 형식이 잘못되었습니다. \"{}\"을 포함하는지 확인하세요.") \
|
||||||
X(TOAST_REDO, "Redo: {0}", "Rehacer: {0}", "Повтор: {0}", "重做: {0}", "다시 실행: {0}") \
|
X(TOAST_REDO, "Redo: {0}", "Rehacer: {0}", "Повтор: {0}", "重做: {0}", "다시 실행: {0}") \
|
||||||
X(ERROR_FILE_NOT_FOUND, "File not found!", "¡Archivo no encontrado!", "Файл не найден!", "找不到文件!", "파일을 찾을 수 없습니다!") \
|
X(ERROR_FILE_NOT_FOUND, "File not found!", "¡Archivo no encontrado!", "Файл не найден!", "找不到文件!", "파일을 찾을 수 없습니다!") \
|
||||||
|
X(ERROR_FILE_PERMISSIONS, "File does not have write permissions!", "¡El archivo no tiene permisos de escritura!", "У файла нет прав на запись!", "文件没有写入权限!", "파일에 쓰기 권한이 없습니다!") \
|
||||||
X(TOAST_RELOAD_SPRITESHEET, "Reloaded spritesheet #{0}: {1}", "Se ha recargado spritesheet #{0}: {1}", "Спрайт-лист #{0} перезагружен: {1}", "重新加载了图集 #{0}: {1}", "{0}번 스프라이트 시트 다시 불러옴: {1}") \
|
X(TOAST_RELOAD_SPRITESHEET, "Reloaded spritesheet #{0}: {1}", "Se ha recargado spritesheet #{0}: {1}", "Спрайт-лист #{0} перезагружен: {1}", "重新加载了图集 #{0}: {1}", "{0}번 스프라이트 시트 다시 불러옴: {1}") \
|
||||||
X(TOAST_RELOAD_SOUND, "Reloaded sound #{0}: {1}", "Se ha recargado sonido #{0}: {1}", "Звук #{0} перезагружен: {1}", "重新加载了声音 #{0}: {1}", "{0}번 사운드 다시 불러옴: {1}") \
|
X(TOAST_RELOAD_SOUND, "Reloaded sound #{0}: {1}", "Se ha recargado sonido #{0}: {1}", "Звук #{0} перезагружен: {1}", "重新加载了声音 #{0}: {1}", "{0}번 사운드 다시 불러옴: {1}") \
|
||||||
X(TOAST_REMOVE_SPRITESHEET, "Removed spritesheet #{0}: {1}", "Se ha removido spritesheet #{0}: {1}", "Спрайт-лист #{0} удален: {1}", "去除了图集 #{0}: {1}", "{0}번 스프라이트 시트 제거됨: {1}") \
|
X(TOAST_REMOVE_SPRITESHEET, "Removed spritesheet #{0}: {1}", "Se ha removido spritesheet #{0}: {1}", "Спрайт-лист #{0} удален: {1}", "去除了图集 #{0}: {1}", "{0}번 스프라이트 시트 제거됨: {1}") \
|
||||||
|
|||||||
Reference in New Issue
Block a user