2021-01-06 16:30:28 +01:00
|
|
|
cmake_minimum_required(VERSION 3.1)
|
2021-03-03 23:46:50 +01:00
|
|
|
project(soundux VERSION 0.2 DESCRIPTION "")
|
2020-10-20 14:54:12 +02:00
|
|
|
|
2021-01-06 16:30:28 +01:00
|
|
|
file(GLOB src
|
|
|
|
"src/*.cpp"
|
|
|
|
"src/*/*.cpp"
|
2021-02-15 21:09:16 +01:00
|
|
|
"src/*/*/*.cpp"
|
|
|
|
"src/*/*/*/*.cpp"
|
2021-03-01 21:47:44 +01:00
|
|
|
"src/*/*/*/*/*.cpp"
|
2021-01-06 16:30:28 +01:00
|
|
|
)
|
2020-12-18 01:06:39 +01:00
|
|
|
|
2021-02-27 19:15:10 +01:00
|
|
|
if (WIN32)
|
2021-03-04 10:35:11 +01:00
|
|
|
add_executable(soundux WIN32 ${src} "assets/icon.rc")
|
2021-02-27 19:15:10 +01:00
|
|
|
else()
|
2021-03-04 10:35:11 +01:00
|
|
|
add_executable(soundux ${src})
|
2021-02-27 19:15:10 +01:00
|
|
|
endif()
|
2021-02-15 21:09:16 +01:00
|
|
|
|
|
|
|
target_include_directories(soundux PRIVATE "lib/miniaudio")
|
|
|
|
target_include_directories(soundux PRIVATE "lib/fancypp/include")
|
2021-01-27 12:38:03 +01:00
|
|
|
target_include_directories(soundux PRIVATE "lib/json/single_include")
|
2021-02-27 19:03:53 +01:00
|
|
|
target_include_directories(soundux PRIVATE "lib/InstanceGuard/Source")
|
2020-10-20 15:25:12 +02:00
|
|
|
|
2021-02-15 21:09:16 +01:00
|
|
|
set(THREADS_PREFER_PTHREAD_FLAG ON)
|
|
|
|
find_package(Threads REQUIRED)
|
|
|
|
target_link_libraries(soundux PRIVATE Threads::Threads ${CMAKE_DL_LIBS})
|
|
|
|
|
|
|
|
if (UNIX)
|
2021-03-04 10:35:11 +01:00
|
|
|
find_package(X11 REQUIRED)
|
|
|
|
include_directories(${X11_INCLUDE_DIR})
|
|
|
|
target_link_libraries(soundux PRIVATE ${X11_LIBRARIES} ${X11_Xinput_LIB})
|
2021-02-16 00:07:10 +01:00
|
|
|
endif()
|
2021-02-24 18:27:00 +01:00
|
|
|
if (WIN32)
|
2021-03-04 10:35:11 +01:00
|
|
|
target_compile_definitions(soundux PRIVATE _CRT_SECURE_NO_WARNINGS=1 _SILENCE_ALL_CXX17_DEPRECATION_WARNINGS=1 _UNICODE=1)
|
2021-02-24 18:27:00 +01:00
|
|
|
endif()
|
2021-02-15 21:09:16 +01:00
|
|
|
|
2021-03-01 22:50:17 +01:00
|
|
|
add_subdirectory(src/ui/impl/webview/lib/webview EXCLUDE_FROM_ALL)
|
|
|
|
add_subdirectory(lib/nativefiledialog-extended EXCLUDE_FROM_ALL)
|
|
|
|
add_subdirectory(lib/InstanceGuard/Source EXCLUDE_FROM_ALL)
|
2021-02-27 19:03:53 +01:00
|
|
|
target_link_libraries(soundux PUBLIC webview nfd InstanceGuard)
|
2021-02-15 21:09:16 +01:00
|
|
|
|
2021-02-26 19:28:15 +01:00
|
|
|
# [[ Build Frontend ]]
|
|
|
|
if (MSVC)
|
2021-03-01 20:57:13 +01:00
|
|
|
file(COPY "${CMAKE_SOURCE_DIR}/src/ui/impl/webview/lib/soundux-ui/"
|
|
|
|
DESTINATION "${CMAKE_SOURCE_DIR}/build/Release/dist")
|
2021-02-26 19:28:15 +01:00
|
|
|
else()
|
2021-03-01 20:57:13 +01:00
|
|
|
file(COPY "${CMAKE_SOURCE_DIR}/src/ui/impl/webview/lib/soundux-ui/"
|
|
|
|
DESTINATION "${CMAKE_SOURCE_DIR}/build/dist")
|
2021-02-26 19:28:15 +01:00
|
|
|
endif()
|
|
|
|
|
2021-01-06 16:30:28 +01:00
|
|
|
target_compile_features(soundux PRIVATE cxx_std_17)
|
|
|
|
set_target_properties(soundux PROPERTIES CMAKE_CXX_STANDARD 17)
|
|
|
|
set_target_properties(soundux PROPERTIES CMAKE_CXX_EXTENSIONS Off)
|
|
|
|
set_target_properties(soundux PROPERTIES CMAKE_CXX_STANDARD_REQUIRED On)
|
|
|
|
|
|
|
|
set_target_properties(soundux PROPERTIES VERSION ${PROJECT_VERSION})
|
2021-02-15 21:09:16 +01:00
|
|
|
set_target_properties(soundux PROPERTIES PROJECT_NAME ${PROJECT_NAME})
|
2021-03-01 23:02:09 +01:00
|
|
|
|
|
|
|
install(TARGETS soundux DESTINATION bin)
|
|
|
|
install(DIRECTORY "${CMAKE_SOURCE_DIR}/build/dist" DESTINATION bin)
|