154 lines
4.5 KiB
CMake
154 lines
4.5 KiB
CMake
cmake_minimum_required(VERSION 3.10)
|
|
cmake_policy(SET CMP0087 NEW)
|
|
include(FeatureSummary)
|
|
|
|
# Setup paths
|
|
SET(RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin/")
|
|
SET(LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib/")
|
|
SET(ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib/")
|
|
SET(EXECUTABLE_OUTPUT_PATH ${RUNTIME_OUTPUT_DIRECTORY})
|
|
SET(LIBRARY_OUTPUT_PATH ${RUNTIME_OUTPUT_DIRECTORY})
|
|
# Fix executable paths for windows
|
|
SET(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${RUNTIME_OUTPUT_DIRECTORY})
|
|
SET(CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE ${RUNTIME_OUTPUT_DIRECTORY})
|
|
SET(CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELWITHDEBINFO ${RUNTIME_OUTPUT_DIRECTORY})
|
|
SET(CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG ${RUNTIME_OUTPUT_DIRECTORY})
|
|
|
|
project(Fuel)
|
|
|
|
option(UPDATE_TRANSLATIONS "Update translations" OFF)
|
|
|
|
set(CMAKE_AUTOMOC ON)
|
|
set(CMAKE_AUTORCC ON)
|
|
set(CMAKE_AUTOUIC ON)
|
|
set(CMAKE_AUTOUIC_SEARCH_PATHS "${CMAKE_SOURCE_DIR}/ui")
|
|
|
|
find_package(Qt5 COMPONENTS Core Gui WebEngineWidgets REQUIRED)
|
|
|
|
set(FORMS
|
|
ui/MainWindow.ui
|
|
ui/CommitDialog.ui
|
|
ui/FileActionDialog.ui
|
|
ui/SettingsDialog.ui
|
|
ui/FslSettingsDialog.ui
|
|
ui/CloneDialog.ui
|
|
ui/BrowserWidget.ui
|
|
ui/RevisionDialog.ui
|
|
ui/RemoteDialog.ui
|
|
ui/AboutDialog.ui)
|
|
|
|
set(SOURCES
|
|
src/main.cpp
|
|
src/MainWindow.cpp
|
|
src/CommitDialog.cpp
|
|
src/FileActionDialog.cpp
|
|
src/SettingsDialog.cpp
|
|
src/FslSettingsDialog.cpp
|
|
src/CloneDialog.cpp
|
|
src/RevisionDialog.cpp
|
|
src/Utils.cpp
|
|
src/FileTableView.cpp
|
|
src/LoggedProcess.cpp
|
|
src/BrowserWidget.cpp
|
|
src/CustomWebView.cpp
|
|
src/Fossil.cpp
|
|
src/Workspace.cpp
|
|
src/SearchBox.cpp
|
|
src/AppSettings.cpp
|
|
src/RemoteDialog.cpp
|
|
src/AboutDialog.cpp)
|
|
|
|
set(HEADERS
|
|
src/MainWindow.h
|
|
src/CommitDialog.h
|
|
src/FileActionDialog.h
|
|
src/SettingsDialog.h
|
|
src/FslSettingsDialog.h
|
|
src/CloneDialog.h
|
|
src/RevisionDialog.h
|
|
src/Utils.h
|
|
src/FileTableView.h
|
|
src/LoggedProcess.h
|
|
src/BrowserWidget.h
|
|
src/CustomWebView.h
|
|
src/Fossil.h
|
|
src/Workspace.h
|
|
src/SearchBox.h
|
|
src/AppSettings.h
|
|
src/RemoteDialog.h
|
|
src/AboutDialog.h
|
|
src/WorkspaceCommon.h)
|
|
|
|
|
|
set(RESOURCES
|
|
rsrc/resources.qrc)
|
|
|
|
set(TRANSLATIONS
|
|
intl/en_US.ts
|
|
intl/el_GR.ts
|
|
intl/de_DE.ts
|
|
intl/es_ES.ts
|
|
intl/fr_FR.ts
|
|
intl/ru_RU.ts
|
|
intl/pt_PT.ts
|
|
intl/it_IT.ts
|
|
intl/nl_NL.ts
|
|
intl/ko_KR.ts)
|
|
|
|
set_source_files_properties(${TRANSLATIONS} PROPERTIES OUTPUT_LOCATION "${RUNTIME_OUTPUT_DIRECTORY}translations")
|
|
|
|
find_package(Qt5LinguistTools)
|
|
if (Qt5LinguistTools_FOUND)
|
|
if (UPDATE_TRANSLATIONS)
|
|
qt5_create_translation(QM_FILES ${CMAKE_SOURCE_DIR}/ui ${CMAKE_SOURCE_DIR}/src ${TRANSLATIONS})
|
|
else ()
|
|
qt5_add_translation(QM_FILES ${TRANSLATIONS})
|
|
endif ()
|
|
install(FILES ${QM_FILES} DESTINATION ./translations)
|
|
else ()
|
|
message("Qt5LinguistTools not found")
|
|
endif ()
|
|
|
|
if (WIN32)
|
|
# clang-cl doesn't support resource files
|
|
if (NOT CMAKE_CXX_COMPILER_ID MATCHES "Clang")
|
|
list(APPEND SOURCES "${CMAKE_SOURCE_DIR}/rsrc/fuel.rc")
|
|
endif ()
|
|
elseif (APPLE)
|
|
list(APPEND SOURCES "${CMAKE_SOURCE_DIR}/rsrc/icons/fuel.icns")
|
|
endif ()
|
|
|
|
add_subdirectory("${CMAKE_SOURCE_DIR}/ext/qtkeychain" EXCLUDE_FROM_ALL)
|
|
|
|
add_executable(${PROJECT_NAME}
|
|
${FORMS}
|
|
${HEADERS}
|
|
${SOURCES}
|
|
${QM_FILES}
|
|
${RESOURCES})
|
|
|
|
target_include_directories(${PROJECT_NAME} PUBLIC ${CMAKE_SOURCE_DIR}
|
|
${CMAKE_SOURCE_DIR}/ui/
|
|
${CMAKE_SOURCE_DIR}/src/)
|
|
target_link_libraries(${PROJECT_NAME} Qt5::Widgets Qt5::WebEngineCore Qt5::WebEngineWidgets qt5keychain)
|
|
|
|
if (WIN32)
|
|
set_target_properties(${PROJECT_NAME} PROPERTIES WIN32_EXECUTABLE TRUE)
|
|
|
|
get_target_property(Qt5_Core_Location Qt5::Core LOCATION)
|
|
get_filename_component(QT_BIN_DIR ${Qt5_Core_Location} DIRECTORY)
|
|
|
|
add_custom_target(copy_dll
|
|
COMMAND ${QT_BIN_DIR}/windeployqt.exe $<TARGET_FILE:${PROJECT_NAME}> --release --no-compiler-runtime --no-translations --no-opengl-sw
|
|
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
|
|
)
|
|
|
|
install(TARGETS ${PROJECT_NAME}
|
|
RUNTIME DESTINATION .
|
|
)
|
|
|
|
install(CODE "execute_process(COMMAND ${QT_BIN_DIR}/windeployqt.exe $<TARGET_FILE:${PROJECT_NAME}> --release --no-compiler-runtime --no-translations --no-opengl-sw --dir \${CMAKE_INSTALL_PREFIX})")
|
|
endif ()
|
|
|
|
|
|
feature_summary(WHAT ALL) |