diff --git a/.gitignore b/.gitignore index 778f9e9..00388f2 100644 --- a/.gitignore +++ b/.gitignore @@ -2,3 +2,5 @@ QPsdPlugin.pro.user Release/* Debug/* Profile/* +build* +CMakeUserPaths.cmake \ No newline at end of file diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..c4d72b4 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,76 @@ +cmake_minimum_required(VERSION 3.5) + +project(qpsd) + +# load paths from the user file if exists +if (EXISTS ${CMAKE_SOURCE_DIR}/CMakeUserPaths.cmake) + include(${CMAKE_SOURCE_DIR}/CMakeUserPaths.cmake) + + message(STATUS "using user paths...") +elseif(MSVC) + message(WARNING "Could not find CMakeUserPaths.cmake - please use this file to specify your install directories (see CMakeUserPathsGit.cmake)") +endif() + +# locate qmake +if(NOT QT_QMAKE_EXECUTABLE) + find_program(QT_QMAKE_EXECUTABLE NAMES "qmake" "qmake-qt5" "qmake.exe") +endif() +if(NOT QT_QMAKE_EXECUTABLE) + message(FATAL_ERROR "you have to set the path to the Qt5 qmake executable in CMakeUserPaths.cmake") +else() + message(STATUS "QMake found: ${QT_QMAKE_EXECUTABLE}") +endif() + +get_filename_component(QT_QMAKE_PATH ${QT_QMAKE_EXECUTABLE} PATH) + +set(QT_ROOT ${QT_QMAKE_PATH}/) +set(CMAKE_PREFIX_PATH ${CMAKE_PREFIX_PATH} ${QT_QMAKE_PATH}/../lib/cmake/Qt5) + +find_package(Qt5 COMPONENTS Core Gui REQUIRED) +set(CMAKE_AUTOMOC ON) +set(CMAKE_INCLUDE_CURRENT_DIR ON) + +file(GLOB LIBQPSD_SOURCES "*.cpp") +file(GLOB LIBQPSD_HEADERS "*.h") + +SET(CMAKE_DEBUG_POSTFIX "d") + +add_library(${PROJECT_NAME} MODULE ${LIBQPSD_SOURCES} ${LIBQPSD_HEADERS}) +target_link_libraries(${PROJECT_NAME} Qt5::Core Qt5::Gui) + +set_target_properties(${PROJECT_NAME} PROPERTIES ARCHIVE_OUTPUT_DIRECTORY_DEBUG ${CMAKE_CURRENT_BINARY_DIR}/libs) +set_target_properties(${PROJECT_NAME} PROPERTIES ARCHIVE_OUTPUT_DIRECTORY_RELEASE ${CMAKE_CURRENT_BINARY_DIR}/libs) +set_target_properties(${PROJECT_NAME} PROPERTIES ARCHIVE_OUTPUT_DIRECTORY_REALLYRELEASE ${CMAKE_CURRENT_BINARY_DIR}/libs) + +set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin/imageformats") + +# install to qt plugins dir +execute_process( + COMMAND ${QT_QMAKE_EXECUTABLE} -query QT_INSTALL_PLUGINS + OUTPUT_VARIABLE QT_PLUGINS_DIR + OUTPUT_STRIP_TRAILING_WHITESPACE) + +if (QT_PLUGINS_DIR) + + # status + message(STATUS "") + message(STATUS "-----------------------------------------------------------------------------") + message(STATUS " ${PROJECT_NAME} configured") + message(STATUS " ") + message(STATUS " it will be installed to ${QT_PLUGINS_DIR}/imageformats") + message(STATUS "-----------------------------------------------------------------------------") + +else () + message(FATAL_ERROR "Qt5 plugin directory cannot be detected.") +endif () + +# Prefix with DESTDIR if available to allow packaging +if (ENV{DESTDIR} AND NOT ENV{DESTDIR} STREQUAL "") + set(plugins_dir "$ENV{DESTDIR}${QT_PLUGINS_DIR}") +else () + set(plugins_dir "${QT_PLUGINS_DIR}") +endif () + +install( + TARGETS ${PROJECT_NAME} + LIBRARY DESTINATION "${plugins_dir}/imageformats") diff --git a/CMakeUserPathsGit.cmake b/CMakeUserPathsGit.cmake new file mode 100644 index 0000000..bab4b15 --- /dev/null +++ b/CMakeUserPathsGit.cmake @@ -0,0 +1,10 @@ +# If you want to use prefix paths with cmake, copy and rename this file to CMakeUserPaths.cmake +# Do not add this file to GIT! + +IF (CMAKE_CL_64) + + SET(CMAKE_PREFIX_PATH ${CMAKE_PREFIX_PATH} "C:/Qt/Qt5.11.1-x64/bin") +ELSE() + + SET(CMAKE_PREFIX_PATH ${CMAKE_PREFIX_PATH} "C:/Qt/Qt5.11.1-x86/bin") +ENDIF() diff --git a/README-nomacs.md b/README-nomacs.md new file mode 100644 index 0000000..ba66325 --- /dev/null +++ b/README-nomacs.md @@ -0,0 +1,38 @@ +# Building libqpsd for nomacs + +## Build libqpsd (Windows) + +### Compile dependencies + +- [Qt](https://www.qt.io/) + +### Compile LibQPSD + +- copy `CMakeUserPathsGit.cmake` and rename it to `CMakeUserPaths.cmake` +- add your library paths to the `${CMAKE_PREFIX_PATH}` in `CMakeUserPaths.cmake` +- Open CMake GUI +- set this folder to `where is the source code` +- choose a build folder (e.g. `build2017-x64`) +- Hit `Configure`then `Generate` +- Open the Project +- Compile the Solution (build Release and Debug) +- Build `INSTALL` +- You should now have a `qpsd.dll` in $YOUR_QT_PATH$/plugins/imageformats +- nomacs will automatically copy the plugins from there to it's build folder + +## Build libqpsd (Ubuntu) + +install dependencies +```bash + sudo apt-get install debhelper cdbs qt5-qmake qttools5-dev-tools qt5-default qttools5-dev libqt5svg5-dev qt5-image-formats-plugins cmake +``` +cd to this directory, then configure the project: +```bash +mkdir build +cd build +cmake .. +``` +and compile: +```bash +make +``` \ No newline at end of file