| |
| project(projectM-qt) # the name of your project |
| cmake_minimum_required(VERSION 2.4.0) |
| cmake_policy(SET CMP0005 OLD) |
| |
| include(cmake/CPack-projectM.cmake) |
| |
| include_directories( ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR} ) |
| |
| include(FindPkgConfig.cmake) |
| if (${CMAKE_PROJECT_NAME} MATCHES "PROJECTM_ROOT") |
| set(LIBPROJECTM_FOUND true) |
| else(${CMAKE_PROJECT_NAME} MATCHES "PROJECTM_ROOT") |
| pkg_search_module(LIBPROJECTM REQUIRED libprojectM) |
| endif(${CMAKE_PROJECT_NAME} MATCHES "PROJECTM_ROOT") |
| |
| OPTION(BUILD_PROJECTM_QT_STATIC "Build a static library of projectM-qt rather than the usual shared library format" OFF) |
| |
| # projectM-Qt version block |
| set(PROJECTM_QT_VERSION 1.10) |
| set(PROJECTM_QT_ABI_LEVEL 1) |
| # |
| |
| find_package(Qt4 REQUIRED) # find and setup Qt4 for this project |
| include(${QT_USE_FILE}) |
| |
| if (QT4_FOUND) |
| MESSAGE(STATUS "[projectM-qt] Qt4 detected.") |
| else (QT4_FOUND) |
| MESSAGE(FATAL_ERROR "Qt4 not detected. Please install Qt4 before continuing (visit www.trolltech.org for more info)") |
| endif(QT4_FOUND) |
| set(QT_USE_OPENGL TRUE) |
| |
| if (LIBPROJECTM_FOUND) |
| MESSAGE(STATUS "[projectM-qt] projectM detected.") |
| else (LIBPROJECTM_FOUND) |
| MESSAGE(FATAL_ERROR "projectM not detected! Please install the projectM module or build from top level projectM source directory.") |
| endif(LIBPROJECTM_FOUND) |
| |
| |
| CONFIGURE_FILE("${CMAKE_CURRENT_SOURCE_DIR}/libprojectM-qt.pc.in" "${CMAKE_CURRENT_BINARY_DIR}/libprojectM-qt.pc" @ONLY) |
| |
| ADD_DEFINITIONS(-DLINUX -DPROJECTM_PREFIX='\"${PROJECTM_PREFIX}\"') |
| ADD_DEFINITIONS(${QT_DEFINITIONS}) |
| ADD_DEFINITIONS(-DQT_PLUGIN) |
| ADD_DEFINITIONS(-DQT_NO_DEBUG) |
| #ADD_DEFINITIONS(-DQT_STATIC) |
| |
| # the variable "projectM-qt_SRCS" contains all .cpp files of this project |
| set(projectM-qt_SRCS |
| qprojectm_mainwindow.cpp |
| qprojectm_mainwindow.hpp |
| configfile.hpp configfile.cpp |
| qpresetfiledialog.hpp |
| qplaylistfiledialog.cpp |
| qplaylistfiledialog.hpp |
| qplaylistmodel.cpp |
| qplaylistmodel.hpp |
| qxmlplaylisthandler.hpp |
| qprojectmconfigdialog.cpp |
| qprojectmconfigdialog.hpp |
| qplaylisttableview.hpp |
| qpresettextedit.cpp |
| qpresettextedit.hpp |
| qpreseteditordialog.cpp |
| qpreseteditordialog.hpp |
| qprojectm.hpp |
| qprojectmwidget.hpp |
| ) |
| |
| |
| set(projectM-qt_MOC_HDRS |
| qprojectm_mainwindow.hpp |
| qpresetfiledialog.hpp |
| qplaylistfiledialog.hpp |
| qplaylistmodel.hpp |
| qprojectmconfigdialog.hpp |
| qplaylisttableview.hpp |
| qpresettextedit.hpp |
| qpreseteditordialog.hpp |
| qprojectm.hpp |
| qprojectmwidget.hpp |
| ) |
| |
| set(projectM-qt_UIS |
| qprojectm_mainwindow.ui |
| qprojectmconfigdialog.ui |
| qpreseteditordialog.ui |
| ) |
| |
| # Qt resource file |
| set( projectM-qt_RESOURCES |
| application.qrc |
| ) |
| |
| # compile resources |
| qt4_add_resources( projectM-qt_RC_SRCS ${projectM-qt_RESOURCES} ) |
| |
| qt4_wrap_ui(projectM-qt_UIS_H ${projectM-qt_UIS}) |
| |
| # After this call, foo_MOC_SRCS = moc_Class1.cxx moc_Class2.cxx moc_Class3.cxx. |
| qt4_wrap_cpp(projectM-qt_MOC_SRCS ${projectM-qt_MOC_HDRS}) |
| |
| if(COMMAND cmake_policy) |
| cmake_policy(SET CMP0003 NEW) |
| endif(COMMAND cmake_policy) |
| |
| if (BUILD_PROJECTM_QT_STATIC) |
| ADD_LIBRARY(projectM-qt STATIC ${projectM-qt_SRCS} ${projectM-qt_RC_SRCS} ${projectM-qt_MOC_SRCS} ${projectM-qt_UIS_H}) |
| else(BUILD_PROJECTM_QT_STATIC) |
| ADD_LIBRARY(projectM-qt SHARED ${projectM-qt_SRCS} ${projectM-qt_RC_SRCS} ${projectM-qt_MOC_SRCS} ${projectM-qt_UIS_H}) |
| endif(BUILD_PROJECTM_QT_STATIC) |
| |
| set_property(TARGET projectM-qt PROPERTY LINK_INTERFACE_LIBRARIES "") |
| set_property(TARGET projectM-qt PROPERTY IMPORTED_LINK_DEPENDENT_LIBRARIES "") |
| SET_TARGET_PROPERTIES(projectM-qt PROPERTIES VERSION ${PROJECTM_QT_VERSION} SOVERSION ${PROJECTM_QT_ABI_LEVEL}) |
| |
| if (${CMAKE_PROJECT_NAME} MATCHES "projectM-complete") |
| set(PROJECTM_INCLUDE ${PROJECTM_ROOT_SOURCE_DIR}/libprojectM) |
| set(PROJECTM_LINK ${PROJECTM_ROOT_BINARY_DIR}/libprojectM) |
| elseif (${CMAKE_PROJECT_NAME} MATCHES ${PROJECT_NAME}) |
| set(PROJECTM_INCLUDE ${LIBPROJECTM_INCLUDEDIR}/libprojectM) |
| set(PROJECTM_LINK ${PROJECTM_LDFLAGS}) |
| endif (${CMAKE_PROJECT_NAME} MATCHES "projectM-complete") |
| |
| LINK_DIRECTORIES(${PROJECTM_LINK}) |
| |
| include_directories(${PROJECTM_INCLUDE} ${QT_INCLUDE_DIR} ${QT_QTGUI_INCLUDE_DIR} ${QT_QTXML_INCLUDE_DIR} ${QT_QTOPENGL_INCLUDE_DIR} ${CMAKE_CURRENT_LIBRARY_DIR}) |
| |
| # link the "qprojectM" target against the Qt libraries. which libraries exactly, is defined by the "include(${QT_USE_FILE})" line above, which sets up this variable. |
| target_link_libraries(projectM-qt projectM GLEW GL ${QT_QTGUI_LIBRARIES} ${QT_QTOPENGL_LIBRARIES} ${QT_QTXML_LIBRARIES} ${QT_LIBRARIES}) |
| |
| install(FILES qprojectm_mainwindow.hpp DESTINATION include/libprojectM-qt) |
| install(TARGETS projectM-qt DESTINATION lib${LIB_SUFFIX}) |
| install(FILES "${CMAKE_CURRENT_BINARY_DIR}/libprojectM-qt.pc" DESTINATION ${CMAKE_INSTALL_PREFIX}/lib${LIB_SUFFIX}/pkgconfig) |
| install(FILES "images/icons/prjm16-transparent.svg" DESTINATION ${CMAKE_INSTALL_PREFIX}/share/pixmaps) |