qprojectM made a library in it's own right on the cmake / pkgconfig side of things

bug fixes and lots of error checking added to make installation easier for n00bs


git-svn-id: https://projectm.svn.sourceforge.net/svnroot/projectm/trunk@825 6778bc44-b910-0410-a7a0-be141de4315d
This commit is contained in:
w1z7ard
2008-02-13 07:32:12 +00:00
parent 4561f8d871
commit 13ed9f41b5
8 changed files with 133 additions and 47 deletions

View File

@ -6,7 +6,7 @@ pkgdatadir=@CMAKE_INSTALL_PREFIX@/share/projectM
sysconfdir=@CMAKE_INSTALL_PREFIX@/share/projectM
Name: libprojectM
Version: 1.00
Version: 1.10
Description: projectM - OpenGL Milkdrop
Requires:
+Libs: -L${libdir} -lprojectM

View File

@ -7,17 +7,34 @@ INCLUDE(FindPkgConfig.cmake)
FIND_PACKAGE(OpenGL)
FIND_PACKAGE(SDL)
pkg_search_module(PROJECTM REQUIRED libprojectM)
if (${CMAKE_PROJECT_NAME} MATCHES ${PROJECT_NAME})
pkg_search_module(LIBPROJECTM REQUIRED libprojectM)
else (${CMAKE_PROJECT_NAME} MATCHES ${PROJECT_NAME})
set(LIBPROJECTM true)
endif(${CMAKE_PROJECT_NAME} MATCHES ${PROJECT_NAME})
pkg_search_module(JACK REQUIRED jack)
if (JACK_FOUND)
MESSAGE(STATUS "Jack detected")
else (JACK_FOUND)
MESSAGE(FATAL_ERROR "JACK is NOT found. Please install jack from http://www.jackaudio.org.")
endif(JACK_FOUND)
if (LIBPROJECTM_FOUND)
MESSAGE (STATUS "projectM detected.")
else(LIBPROJECTM_FOUND)
MESSAGE (FATAL_ERROR "projectM NOT detected. Please install the projectM module or build from the top level projectM source directory.")
endif(LIBPROJECTM_FOUND)
ADD_DEFINITIONS(-DLINUX -DPROJECTM_PREFIX='"${PROJECTM_PREFIX}"')
if (${CMAKE_PROJECT_NAME} MATCHES "PROJECTM_ROOT")
set(PROJECTM_INCLUDE ${PROJECTM_ROOT_SOURCE_DIR}/projectM-engine)
set(PROJECTM_LINK ${PROJECTM_ROOT_BINARY_DIR}/projectM-engine)
elseif (${CMAKE_PROJECT_NAME} MATCHES ${PROJECT_NAME})
set(PROJECTM_INCLUDE ${PROJECTM_INCLUDEDIR}/libprojectM)
set(PROJECTM_LINK ${PROJECTM_LDFLAGS})
set(PROJECTM_INCLUDE ${LIBPROJECTM_INCLUDEDIR}/libprojectM)
set(PROJECTM_LINK ${LIBPROJECTM_LDFLAGS})
endif (${CMAKE_PROJECT_NAME} MATCHES "PROJECTM_ROOT")
INCLUDE_DIRECTORIES(${PROJECTM_INCLUDE} ${JACK_INCLUDEDIR} ${SDL_INCLUDE_DIR} ${GTK_INCLUDE_DIR})

View File

@ -6,17 +6,34 @@ INCLUDE(FindPkgConfig.cmake)
FIND_PACKAGE(OpenGL)
FIND_PACKAGE(SDL)
pkg_search_module(PROJECTM REQUIRED libprojectM)
if (${CMAKE_PROJECT_NAME} MATCHES ${PROJECT_NAME})
pkg_search_module(LIBPROJECTM REQUIRED libprojectM)
else (${CMAKE_PROJECT_NAME} MATCHES ${PROJECT_NAME})
set(LIBPROJECTM true)
endif(${CMAKE_PROJECT_NAME} MATCHES ${PROJECT_NAME})
pkg_search_module(LIBVISUAL REQUIRED libvisual-0.4)
if (LIBPROJECTM_FOUND)
MESSAGE (STATUS "projectM detected.")
else(LIBPROJECTM_FOUND)
MESSAGE (FATAL_ERROR "projectM NOT detected. Please install the projectM module or build from the top level projectM source directory.")
endif(LIBPROJECTM_FOUND)
if(LIBVISUAL_FOUND)
MESSAGE(STATUS "libvisual detected")
else(LIBVISUAL_FOUND)
MESSAGE(FATAL_ERROR "libvisual 0.4 not found! Please visit http://libvisual.sf.net and download the module.")
endif(LIBVISUAL_FOUND)
ADD_DEFINITIONS(-DLINUX -DPROJECTM_PREFIX='"${PROJECTM_PREFIX}"')
if (${CMAKE_PROJECT_NAME} MATCHES "PROJECTM_ROOT")
set(PROJECTM_INCLUDE ${PROJECTM_ROOT_SOURCE_DIR}/projectM-engine)
set(PROJECTM_LINK ${PROJECTM_ROOT_BINARY_DIR}/projectM-engine)
elseif (${CMAKE_PROJECT_NAME} MATCHES ${PROJECT_NAME})
set(PROJECTM_INCLUDE ${PROJECTM_INCLUDEDIR}/libprojectM)
set(PROJECTM_LINK ${PROJECTM_LDFLAGS})
set(PROJECTM_INCLUDE ${LIBPROJECTM_INCLUDEDIR}/libprojectM)
set(PROJECTM_LINK ${LIBPROJECTM_LDFLAGS})
endif (${CMAKE_PROJECT_NAME} MATCHES "PROJECTM_ROOT")
INCLUDE_DIRECTORIES(${PROJECTM_INCLUDE} ${LIBVISUAL_INCLUDEDIR} ${SDL_INCLUDE_DIR})

View File

@ -10,7 +10,11 @@ INCLUDE(FindPkgConfig.cmake)
FIND_PACKAGE(OpenGL)
FIND_PACKAGE(SDL)
pkg_search_module(PROJECTM REQUIRED libprojectM)
if (${CMAKE_PROJECT_NAME} MATCHES ${PROJECT_NAME})
pkg_search_module(LIBPROJECTM REQUIRED libprojectM)
else (${CMAKE_PROJECT_NAME} MATCHES ${PROJECT_NAME})
set(LIBPROJECTM true)
endif(${CMAKE_PROJECT_NAME} MATCHES ${PROJECT_NAME})
ADD_DEFINITIONS(-DLINUX -DPROJECTM_PREFIX='"${PROJECTM_PREFIX}"')
@ -18,8 +22,8 @@ if (${CMAKE_PROJECT_NAME} MATCHES "PROJECTM_ROOT")
set(PROJECTM_INCLUDE ${PROJECTM_ROOT_SOURCE_DIR}/projectM-engine)
set(PROJECTM_LINK ${PROJECTM_ROOT_BINARY_DIR}/projectM-engine)
elseif (${CMAKE_PROJECT_NAME} MATCHES ${PROJECT_NAME})
set(PROJECTM_INCLUDE ${PROJECTM_INCLUDEDIR}/libprojectM)
set(PROJECTM_LINK ${PROJECTM_LDFLAGS})
set(PROJECTM_INCLUDE ${LIBPROJECTM_INCLUDEDIR}/libprojectM)
set(PROJECTM_LINK ${LIBPROJECTM_LDFLAGS})
endif (${CMAKE_PROJECT_NAME} MATCHES "PROJECTM_ROOT")
INCLUDE_DIRECTORIES(${PROJECTM_INCLUDE} ${SDL_INCLUDE_DIR} ${GTK_INCLUDE_DIR})

View File

@ -4,15 +4,36 @@ set(QT_USE_OPENGL TRUE)
include(${QT_USE_FILE} FindPkgConfig.cmake)
if (${CMAKE_PROJECT_NAME} MATCHES ${PROJECT_NAME})
pkg_search_module(LIBPROJECTM REQUIRED libprojectM)
pkg_search_module(LIBQPROJECTM REQUIRED libqprojectM)
else(${CMAKE_PROJECT_NAME} MATCHES ${PROJECT_NAME})
set(LIBPROJECTM_FOUND true)
set(LIBQPROJECTM_FOUND true)
endif(${CMAKE_PROJECT_NAME} MATCHES ${PROJECT_NAME})
FIND_PACKAGE(OpenGL)
FIND_PACKAGE(Qt4 REQUIRED)
# WRONG! How do I do this? using FIND_PACKAGE?
##pkg_search_module(PROJECTM REQUIRED projectM qprojectM)
pkg_search_module(JACK REQUIRED jack)
pkg_search_module(PROJECTM REQUIRED libprojectM)
pkg_search_module(PROJECTM REQUIRED libqprojectM)
if (LIBPROJECTM_FOUND)
MESSAGE (STATUS "projectM detected.")
else(LIBPROJECTM_FOUND)
MESSAGE (FATAL_ERROR "projectM NOT detected. Please install the projectM module or build from the top level projectM source directory.")
endif(LIBPROJECTM_FOUND)
if (LIBQPROJECTM_FOUND)
MESSAGE (STATUS "qprojectM detected.")
else(LIBQPROJECTM_FOUND)
MESSAGE (FATAL_ERROR "qprojectM NOT detected. Please install the qprojectM module or build from the top level projectM source directory.")
endif(LIBQPROJECTM_FOUND)
if (JACK_FOUND)
MESSAGE(STATUS "Jack detected")
else (JACK_FOUND)
MESSAGE(FATAL_ERROR "JACK is NOT found. Please install jack from http://www.jackaudio.org.")
endif(JACK_FOUND)
# the variable "qprojectM_SRCS" contains all .cpp files of this project
set(qprojectM_jack_SRCS
@ -37,8 +58,8 @@ if (${CMAKE_PROJECT_NAME} MATCHES "PROJECTM_ROOT")
set(PROJECTM_INCLUDE ${PROJECTM_ROOT_SOURCE_DIR}/projectM-engine ${PROJECTM_ROOT_SOURCE_DIR}/qprojectM)
set(PROJECTM_LINK ${PROJECTM_ROOT_BINARY_DIR}/projectM-engine ${PROJECTM_ROOT_BINARY_DIR}/qprojectM)
elseif (${CMAKE_PROJECT_NAME} MATCHES ${PROJECT_NAME})
set(PROJECTM_INCLUDE ${PROJECTM_INCLUDEDIR}/libprojectM)
set(PROJECTM_LINK ${PROJECTM_LDFLAGS})
set(PROJECTM_INCLUDE ${LIBPROJECTM_INCLUDEDIR}/libqprojectM ${LIBQPROJECTM_INCLUDEDIR}/libprojectM)
set(PROJECTM_LINK ${LIBPROJECTM_LDFLAGS} ${LIBQPROJECTM_LDFLAGS})
# qprojectM places itself in same location as (lib)projectM
# whether it should is a whole other issue
endif (${CMAKE_PROJECT_NAME} MATCHES "PROJECTM_ROOT")

View File

@ -4,33 +4,33 @@ set(QT_USE_OPENGL TRUE)
include(${QT_USE_FILE} FindPkgConfig.cmake)
# only search for these modules when not building monolithically
if (${CMAKE_PROJECT_NAME} MATCHES ${PROJECT_NAME})
pkg_search_module(LIBPROJECTM REQUIRED libprojectM)
pkg_search_module(LIBQPROJECTM REQUIRED libqprojectM)
else(${CMAKE_PROJECT_NAME} MATCHES ${PROJECT_NAME})
set(LIBPROJECTM_FOUND true)
set(LIBQPROJECTM_FOUND true)
endif(${CMAKE_PROJECT_NAME} MATCHES ${PROJECT_NAME})
FIND_PACKAGE(OpenGL)
FIND_PACKAGE(Qt4 REQUIRED)
# only search for these modules when not building monolithically
#if (${CMAKE_PROJECT_NAME} MATCHES ${PROJECT_NAME})
# set(LIBPROJECTM_FOUND true)
# pkg_search_module(LIBPROJECTM REQUIRED libprojectM)
# pkg_search_module(LIBQPROJECTM REQUIRED libqprojectM)
#else(${CMAKE_PROJECT_NAME} MATCHES ${PROJECT_NAME})
# set(LIBPROJECTM_FOUND true)
# set(LIBQPROJECTM_FOUND true)
#endif(${CMAKE_PROJECT_NAME} MATCHES ${PROJECT_NAME})
pkg_search_module(LIBPULSE REQUIRED libpulse)
#if (LIBPROJECTM_FOUND)
#MESSAGE (STATUS "projectM detected.")
#else(LIBPROJECTM_FOUND)
#MESSAGE (FATAL_ERROR "projectM NOT detected. Please install the projectM module or build from the top level projectM #source directory.")
#endif(LIBPROJECTM_FOUND)
#
#if (LIBQPROJECTM_FOUND)
#MESSAGE (STATUS "qprojectM detected.")
#else(LIBQPROJECTM_FOUND)
#MESSAGE (FATAL_ERROR "qprojectM NOT detected. Please install the qprojectM module or build from the top level #projectM source directory.")
#endif(LIBQPROJECTM_FOUND)
if (LIBPROJECTM_FOUND)
MESSAGE (STATUS "projectM detected.")
else(LIBPROJECTM_FOUND)
MESSAGE (FATAL_ERROR "projectM NOT detected. Please install the projectM module or build from the top level projectM source directory.")
endif(LIBPROJECTM_FOUND)
if (LIBQPROJECTM_FOUND)
MESSAGE (STATUS "qprojectM detected.")
else(LIBQPROJECTM_FOUND)
MESSAGE (FATAL_ERROR "qprojectM NOT detected. Please install the qprojectM module or build from the top level projectM source directory.")
endif(LIBQPROJECTM_FOUND)
if (LIBPULSE_FOUND)
MESSAGE(STATUS "Pulse audio detected")
@ -67,15 +67,15 @@ if (${CMAKE_PROJECT_NAME} MATCHES "PROJECTM_ROOT")
set(PROJECTM_INCLUDE ${PROJECTM_ROOT_SOURCE_DIR}/projectM-engine ${PROJECTM_ROOT_SOURCE_DIR}/qprojectM)
set(PROJECTM_LINK ${PROJECTM_ROOT_BINARY_DIR}/projectM-engine ${PROJECTM_ROOT_BINARY_DIR}/qprojectM)
elseif (${CMAKE_PROJECT_NAME} MATCHES ${PROJECT_NAME})
set(PROJECTM_INCLUDE ${PROJECTM_INCLUDEDIR}/libprojectM)
set(PROJECTM_LINK ${PROJECTM_LDFLAGS})
set(PROJECTM_INCLUDE ${LIBPROJECTM_INCLUDEDIR}/libprojectM ${LIBQPROJECTM_INCLUDEDIR}/libqprojectM)
set(PROJECTM_LINK ${LIBPROJECTM_LDFLAGS} ${LIBQPROJECTM_LDFLAGS})
# qprojectM places itself in same location as (lib)projectM
# whether it should is a whole other issue
endif (${CMAKE_PROJECT_NAME} MATCHES "PROJECTM_ROOT")
INCLUDE_DIRECTORIES(${PROJECTM_INCLUDE} ${QT_INCLUDE_DIR} ${QT_QTGUI_INCLUDE_DIR} ${QT_QTOPENGL_INCLUDE_DIR} ${QT_QTCORE_INCLUDE_DIR})
LINK_DIRECTORIES(${PROJECTM_LINK} ${PULSEAUDIO_LDFLAGS})
LINK_DIRECTORIES(${PROJECTM_LINK} ${PULSEAUDIO_LDFLAGS})
ADD_EXECUTABLE(qprojectM-pulseaudio ${qprojectM_pulseaudio_SRCS} ${qprojectM_pulseaudio_MOC_SRCS} ${qprojectM_pulseaudio_UIS_H})

View File

@ -1,11 +1,20 @@
# the next line sets up include and link directories and defines some variables that we will use.
# you can modify the behavior by setting some variables, e.g.
project(qprojectM) # the name of your project
cmake_minimum_required(VERSION 2.4.0)
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")
find_package(Qt4 REQUIRED) # find and setup Qt4 for this project
include(${QT_USE_FILE})
if (QT4_FOUND)
MESSAGE(STATUS "Qt4 Detected fine.")
@ -14,10 +23,15 @@ MESSAGE(FATAL_ERROR "Qt4 not detected. Please install Qt4 before continuing (vis
endif(QT4_FOUND)
set(QT_USE_OPENGL TRUE)
# -> this will cause cmake to include and link against the OpenGL module
include(${QT_USE_FILE} FindPkgConfig.cmake)
if (LIBPROJECTM_FOUND)
MESSAGE(STATUS "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("libqprojectM.pc.in" "libqprojectM.pc" @ONLY)
ADD_DEFINITIONS(-DLINUX -DPROJECTM_PREFIX='"${PROJECTM_PREFIX}"')
ADD_DEFINITIONS(${QT_DEFINITIONS})
ADD_DEFINITIONS(-DQT_PLUGIN)
@ -69,12 +83,11 @@ ADD_LIBRARY(qprojectM SHARED ${qprojectM_SRCS} ${qprojectM_RC_SRCS} ${qprojectM_
SET_TARGET_PROPERTIES(qprojectM PROPERTIES VERSION 1.10 SOVERSION 1)
if (${CMAKE_PROJECT_NAME} MATCHES "PROJECTM_ROOT")
set(PROJECTM_INCLUDE ${PROJECTM_ROOT_SOURCE_DIR}/projectM-engine)
set(PROJECTM_LINK ${PROJECTM_ROOT_BINARY_DIR}/projectM-engine)
elseif (${CMAKE_PROJECT_NAME} MATCHES ${PROJECT_NAME})
set(PROJECTM_INCLUDE ${PROJECTM_INCLUDEDIR}/libprojectM)
set(PROJECTM_INCLUDE ${LIBPROJECTM_INCLUDEDIR}/libprojectM)
set(PROJECTM_LINK ${PROJECTM_LDFLAGS})
endif (${CMAKE_PROJECT_NAME} MATCHES "PROJECTM_ROOT")
@ -85,5 +98,6 @@ include_directories(${PROJECTM_INCLUDE} ${QT_INCLUDE_DIR} ${QT_QTGUI_INCLUDE_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(qprojectM projectM ${QT_QTGUI_LIBRARIES} ${QT_QTOPENGL_LIBRARIES} ${QT_QTXML_LIBRARIES} ${QT_LIBRARIES})
install(FILES QProjectM_MainWindow.hpp DESTINATION include/libprojectM)
install(FILES QProjectM_MainWindow.hpp DESTINATION include/libqprojectM)
install(TARGETS qprojectM DESTINATION lib)
install(FILES "${CMAKE_BINARY_DIR}/libqprojectM.pc" DESTINATION ${CMAKE_INSTALL_PREFIX}/lib${LIB_SUFFIX}/pkgconfig)

View File

@ -0,0 +1,13 @@
prefix=@CMAKE_INSTALL_PREFIX@
exec_prefix=@CMAKE_INSTALL_PREFIX@
libdir=@CMAKE_INSTALL_PREFIX@/lib
includedir=@CMAKE_INSTALL_PREFIX@/include
pkgdatadir=@CMAKE_INSTALL_PREFIX@/share/qprojectM
sysconfdir=@CMAKE_INSTALL_PREFIX@/share/qprojectM
Name: libqprojectM
Version: 1.10
Description: qprojectM - provides a full featured Qt4 graphical user interface to projectM
Requires: libprojectM QtCore QtGui QtXml QtOpenGL
+Libs: -L${libdir} -lqprojectM
+Cflags: -I${includedir}