mirror of https://github.com/AxioDL/amuse.git
155 lines
3.7 KiB
CMake
155 lines
3.7 KiB
CMake
cmake_minimum_required(VERSION 3.10)
|
|
|
|
# Automatically handle invoking autorcc, moc, and uic.
|
|
set(CMAKE_AUTOMOC ON)
|
|
set(CMAKE_AUTORCC ON)
|
|
set(CMAKE_AUTOUIC ON)
|
|
|
|
set(CMAKE_INCLUDE_CURRENT_DIR ON)
|
|
|
|
find_package(Qt6 COMPONENTS LinguistTools Network Qml SvgWidgets Widgets Xml REQUIRED)
|
|
|
|
configure_file(resources/translation_res.qrc translation_res.qrc @ONLY)
|
|
set(TRANSLATIONS
|
|
resources/lang_de.ts
|
|
)
|
|
QT6_CREATE_TRANSLATION(QM_FILES ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/../lib ${TRANSLATIONS})
|
|
|
|
add_executable(amuse-gui WIN32 MACOSX_BUNDLE
|
|
ADSREditor.cpp
|
|
ADSREditor.hpp
|
|
Common.cpp
|
|
Common.hpp
|
|
CurveEditor.cpp
|
|
CurveEditor.hpp
|
|
EditorWidget.cpp
|
|
EditorWidget.hpp
|
|
KeyboardWidget.cpp
|
|
KeyboardWidget.hpp
|
|
KeymapEditor.cpp
|
|
KeymapEditor.hpp
|
|
LayersEditor.cpp
|
|
LayersEditor.hpp
|
|
MainWindow.cpp
|
|
MainWindow.hpp
|
|
MainWindow.ui
|
|
MIDIReader.cpp
|
|
MIDIReader.hpp
|
|
NewSoundMacroDialog.cpp
|
|
NewSoundMacroDialog.hpp
|
|
ProjectModel.cpp
|
|
ProjectModel.hpp
|
|
SampleEditor.cpp
|
|
SampleEditor.hpp
|
|
SongGroupEditor.cpp
|
|
SongGroupEditor.hpp
|
|
SoundGroupEditor.cpp
|
|
SoundGroupEditor.hpp
|
|
SoundMacroEditor.cpp
|
|
SoundMacroEditor.hpp
|
|
StatusBarWidget.cpp
|
|
StatusBarWidget.hpp
|
|
StudioSetupWidget.cpp
|
|
StudioSetupWidget.hpp
|
|
|
|
main.cpp
|
|
|
|
resources/resources.qrc
|
|
${CMAKE_CURRENT_BINARY_DIR}/translation_res.qrc
|
|
|
|
${QM_FILES}
|
|
)
|
|
|
|
target_compile_definitions(amuse-gui PRIVATE
|
|
# Disable implicit conversions from ASCII to QString.
|
|
-DQT_NO_CAST_FROM_ASCII
|
|
-DQT_NO_CAST_TO_ASCII
|
|
|
|
# Disable implicit conversions of QByteArray to const char* or const void*
|
|
-DQT_NO_CAST_FROM_BYTEARRAY
|
|
|
|
# Disable narrowing conversions in signal/slot connect() calls.
|
|
-DQT_NO_NARROWING_CONVERSIONS_IN_CONNECT
|
|
|
|
# Disable unsafe overloads of QProcess' start() function.
|
|
-DQT_NO_PROCESS_COMBINED_ARGUMENT_START
|
|
|
|
# Disable implicit QString->QUrl conversions to enforce use of proper resolving functions.
|
|
-DQT_NO_URL_CAST_FROM_STRING
|
|
|
|
# Allows for more efficient string concatenation, resulting in less temporaries.
|
|
-DQT_USE_QSTRINGBUILDER
|
|
)
|
|
|
|
if (MSVC)
|
|
target_compile_options(amuse-gui PRIVATE
|
|
# Enforce various standards compliant behavior.
|
|
$<$<COMPILE_LANGUAGE:CXX>:/permissive->
|
|
|
|
# Enable standard volatile semantics.
|
|
$<$<COMPILE_LANGUAGE:CXX>:/volatile:iso>
|
|
|
|
# Reports the proper value for the __cplusplus preprocessor macro.
|
|
$<$<COMPILE_LANGUAGE:CXX>:/Zc:__cplusplus>
|
|
|
|
# Use latest C++ standard.
|
|
$<$<COMPILE_LANGUAGE:CXX>:/std:c++latest>
|
|
)
|
|
if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC")
|
|
# Flags for MSVC (not clang-cl)
|
|
target_compile_options(amuse-gui PRIVATE
|
|
# Allow constexpr variables to have explicit external linkage.
|
|
$<$<COMPILE_LANGUAGE:CXX>:/Zc:externConstexpr>
|
|
|
|
# Assume that new throws exceptions, allowing better code generation.
|
|
$<$<COMPILE_LANGUAGE:CXX>:/Zc:throwingNew>
|
|
)
|
|
endif()
|
|
endif()
|
|
|
|
if(WIN32)
|
|
target_sources(amuse-gui PRIVATE
|
|
platforms/win/amuse-gui.rc
|
|
platforms/win/amuse-gui.manifest
|
|
)
|
|
elseif(APPLE)
|
|
target_sources(amuse-gui PRIVATE
|
|
MacOSExtras.mm
|
|
platforms/mac/mainicon.icns
|
|
)
|
|
set_source_files_properties(platforms/mac/mainicon.icns PROPERTIES
|
|
MACOSX_PACKAGE_LOCATION Resources
|
|
)
|
|
endif()
|
|
|
|
add_subdirectory(platforms/freedesktop)
|
|
declare_qticon_target()
|
|
target_sources(amuse-gui PRIVATE mainicon_qt.cpp)
|
|
|
|
if(COMMAND add_sanitizers)
|
|
add_sanitizers(amuse-gui)
|
|
endif()
|
|
|
|
set_target_properties(amuse-gui PROPERTIES
|
|
MACOSX_BUNDLE_INFO_PLIST "${CMAKE_CURRENT_SOURCE_DIR}/platforms/mac/Info.plist"
|
|
)
|
|
|
|
target_link_libraries(amuse-gui
|
|
${PLAT_LIBS}
|
|
|
|
Qt6::Network
|
|
Qt6::Qml
|
|
Qt6::SvgWidgets
|
|
Qt6::Widgets
|
|
Qt6::Xml
|
|
|
|
amuse
|
|
athena-core
|
|
boo
|
|
${BOO_SYS_LIBS}
|
|
logvisor
|
|
lzokay
|
|
xxhash
|
|
${ZLIB_LIBRARIES}
|
|
)
|