1 cmake_minimum_required(VERSION 3.12)
3 project(ViewYourMind-release)
5 find_package(Qt5 COMPONENTS Widgets LinguistTools REQUIRED)
26 # Switch on Debug mode with one of below:
27 # cmake -DCMAKE_BUILD_TYPE=Debug .
28 # set(CMAKE_BUILD_TYPE Debug)
34 # On Linux DBUS is used for IPC with vym
35 # On openSUSE install it using: zypper install dbus-1-devel
41 LIST(APPEND QtComponents DBus)
42 LIST(APPEND QtLibraries Qt5::DBus)
47 set(OPENSSL_ROOT_DIR "C:/OpenSSL-Win64")
51 include_directories(${OPENSSL_INCLUDE_DIRS})
52 link_directories(${OPENSSL_LIBRARIES})
53 message(STATUS "Using OpenSSL version: ${OPENSSL_VERSION}")
55 message(STATUS "No openSSL found?!")
56 # Error; with REQUIRED, pkg_search_module() will throw an error by it's own
59 #target_link_libraries(${YOUR_TARGET_HERE} ${OPENSSL_LIBRARIES})
60 #target_link_libraries(project_name /path/of/libssl.so /path/of/libcrypto.so)
62 set(CMAKE_INSTALL_DATAROOTDIR ".")
65 include(GNUInstallDirs)
67 find_package(Qt5 COMPONENTS ${QtComponents} REQUIRED)
71 list(APPEND CMAKE_AUTOUIC_SEARCH_PATHS "${CMAKE_SOURCE_DIR}/forms")
73 get_target_property(QtLibraryType Qt5::Widgets TYPE)
75 if(QtLibraryType STREQUAL STATIC_LIBRARY)
76 message(STATUS "Static Qt linkage")
77 list(APPEND QtLibraries Qt5::QSvgPlugin)
85 file(GLOB VymSources RELATIVE ${CMAKE_SOURCE_DIR} "src/*.cpp")
88 list(APPEND VymSources
92 ADD_COMPILE_DEFINITIONS(_USE_MATH_DEFINES)
96 # Add DBUS interfaces, if DBUS is available on platform
98 list(APPEND VymSources src/dbus/adaptormodel.cpp src/dbus/adaptorvym.cpp)
99 include_directories(${CMAKE_SOURCE_DIR}/src/dbus ${CMAKE_SOURCE_DIR}/src)
100 ADD_COMPILE_DEFINITIONS(VYM_DBUS)
103 # Translations (release)
105 # To update the translation files based on source code changes
106 # first call manually
107 # lupdate-qt5 src/ -ts lang/*.ts
109 # Qt6 will have a dedicated macro:
110 # https://doc.qt.io/qt-6/qtlinguist-cmake-qt-add-lrelease.html
112 #file(GLOB ts_files ABSOLUTE ${CMAKE_BINARY_DIR} "lang/*.ts")
113 file(GLOB ts_files RELATIVE ${CMAKE_SOURCE_DIR} "lang/*.ts")
114 message(STATUS "Creating ${CMAKE_BINARY_DIR}/translations")
115 file(MAKE_DIRECTORY "${CMAKE_BINARY_DIR}/translations")
116 set_source_files_properties(${ts_files} PROPERTIES OUTPUT_LOCATION ${CMAKE_BINARY_DIR}/translations)
117 #set_source_files_properties(${ts_files} PROPERTIES OUTPUT_LOCATION ${CMAKE_SOURCE_DIR}/translations)
119 #QT5_create_translation(qm_files ${CMAKE_SOURCE_DIR} ${ts_files})
120 #QT5_create_translation(qm_files ${CMAKE_BINARY_DIR} ${ts_files})
121 #QT5_create_translation(qm_files ${CMAKE_SOURCE_DIR}/src)
123 QT5_add_translation(qm_files ${ts_files})
124 add_compile_definitions(CMAKE_SOURCE_DIR)
126 message(STATUS "CMAKE_BINARY_DIR: ${CMAKE_BINARY_DIR}")
127 message(STATUS "ts_files: ${ts_files}")
128 message(STATUS "qm_files: ${qm_files}")
130 ADD_COMPILE_DEFINITIONS(VYMBASEDIR="${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_DATAROOTDIR}")
132 add_executable(vym ${VymSources} vym.qrc ${qm_files})
133 target_link_libraries(vym ${QtLibraries})
136 set_target_properties(vym PROPERTIES WIN32_EXECUTABLE TRUE)
137 install(TARGETS vym DESTINATION "${CMAKE_INSTALL_PREFIX}")
139 install(TARGETS vym DESTINATION bin)
143 message(STATUS "Detected APPLE")
144 set_target_properties(vym PROPERTIES MACOSX_BUNDLE TRUE )
146 # Add property to Info.plist
147 set(MACOSX_BUNDLE_ICON_FILE vym.icns)
149 # tell CMake where to find and install the file itself
150 set(APP_ICON_MACOSX ${CMAKE_CURRENT_SOURCE_DIR}/icons/vym.icns)
151 set_source_files_properties(${APP_ICON_MACOSX} PROPERTIES
152 MACOSX_PACKAGE_LOCATION "Resources")
154 #FIXME-0 add_executable(vym MACOSX_BUNDLE main.cpp ${APP_ICON_MACOSX})
155 target_sources(vym PUBLIC ${APP_ICON_MACOSX})
158 add_custom_target(make-translations-directory ALL
159 COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_BINARY_DIR}/translations)
160 add_dependencies(vym make-translations-directory)
162 install(DIRECTORY demos DESTINATION ${CMAKE_INSTALL_DATAROOTDIR})
163 install(DIRECTORY doc DESTINATION ${CMAKE_INSTALL_DOCDIR} FILES_MATCHING PATTERN "*.pdf")
164 install(FILES doc/vym.1.gz DESTINATION ${CMAKE_INSTALL_MANDIR})
165 install(FILES README.md LICENSE.txt DESTINATION ${CMAKE_INSTALL_DOCDIR})
166 install(DIRECTORY exports flags icons macros ${CMAKE_BINARY_DIR}/translations scripts styles DESTINATION ${CMAKE_INSTALL_DATAROOTDIR})
169 install(FILES icons/vym.png DESTINATION ${CMAKE_INSTALL_PREFIX}/share/icons/hicolor/48x48/apps)
170 file(CREATE_LINK ../apps/vym.png application-x-vym.png SYMBOLIC)
171 install(FILES ${CMAKE_BINARY_DIR}/application-x-vym.png DESTINATION ${CMAKE_INSTALL_PREFIX}/share/icons/hicolor/48x48/mimetypes)
172 install(FILES config/vym.xml DESTINATION ${CMAKE_INSTALL_PREFIX}/share/mime/packages)
173 install(FILES config/vym.desktop DESTINATION ${CMAKE_INSTALL_PREFIX}/share/applications)