Define a single expected format for the values defined in every FindXXX.cmake file.

Upgrade all the QT functionality to use the new FindXXX.cmake format
Add a module for AVIFile.
This commit is contained in:
Ian Scott 2002-09-02 07:03:43 -04:00
parent a888ba53fa
commit 63d64d5780
6 changed files with 121 additions and 41 deletions

40
Modules/FindAVIFile.cmake Normal file
View File

@ -0,0 +1,40 @@
# Locate AVIFILE library and include paths
# AVIFILE (http://avifile.sourceforge.net/ )is a set of library for i386 machines
# to use various AVI codecs. Support is limited beyond Linux. Windows
# provides native AVI support, and so doesn't need this library.
# This module defines
# AVIFILE_INCLUDE_DIR, where to find avifile.h , etc.
# AVIFILE_LIBRARIES, the libraries to link against to use AVIFILE
# AVIFILE_DEFINITIONS, definitions to use when compiling code that uses AVIFILE.
# AVIFILE_FOUND, If false, do try to use AVIFILE.
IF (UNIX)
FIND_PATH(AVIFILE_INCLUDE_DIR avifile.h
/usr/local/avifile/include
/usr/local/include/avifile
/usr/include
)
FIND_LIBRARY(AVIFILE_AVIPLAY_LIBRARY aviplay
/usr/local/avifile/lib
/usr/local/lib
/usr/lib
)
ENDIF (UNIX)
SET (AVIFILE_FOUND "NO")
IF(AVIFILE_INCLUDE_DIR)
IF(AVIFILE_AVIPLAY_LIBRARY)
SET( AVIFILE_LIBRARIES ${AVIFILE_AVIPLAY_LIBRARY} )
SET( AVIFILE_FOUND "YES" )
SET( AVIFILE_DEFINITIONS "")
ENDIF(AVIFILE_AVIPLAY_LIBRARY)
ENDIF(AVIFILE_INCLUDE_DIR)

View File

@ -1,18 +1,22 @@
# Locate Qt include paths and libraries
# This module defines
# QT_INCLUDE_PATH, where to find qt.h, etc.
# QT_QT_LIBRARY, where to find the qt library
# QT_MOC_EXE, where to find the moc tool
# QT_UIC_EXE, where to find the uic tool
# USE_QT_FILE, a file for any CMakeLists.txt file to include to actually link against qt
# QT_WRAP_CPP, This allows the QT_WRAP_CPP command to work.
# QT_WRAP_UI, This allows the QT_WRAP_UI command to work.
# QT_INCLUDE_DIR, where to find qt.h, etc.
# QT_LIBRARIES, the libraries to link against to use Qt.
# QT_DEFINITIONS, definitions to use when compiling code that uses Qt.
# QT_WRAP_CPP, If false, don't use QT_WRAP_CPP command.
# QT_WRAP_UI, If false, don't use QT_WRAP_UI command.
# QT_FOUND, If false, do try to use Qt.
# also defined, but not for general use are
# QT_MOC_EXECUTABLE, where to find the moc tool.
# QT_UIC_EXECUTABLE, where to find the uic tool.
# QT_QT_LIBRARY, where to find the Qt library.
# QT_QTMAIN_LIBRARY, where to find the qtmain library. This is only required by Qt3 on Windows.
IF (UNIX)
FIND_PATH(QT_INCLUDE_PATH qt.h
FIND_PATH(QT_INCLUDE_DIR qt.h
${QTDIR}/include
/usr/local/qt/include
/usr/local/include
@ -26,12 +30,12 @@ IF (UNIX)
/usr/lib
)
FIND_FILE(QT_MOC_EXE moc
FIND_FILE(QT_MOC_EXECUTABLE moc
${QTDIR}/bin
${path}
)
FIND_FILE(QT_UIC_EXE uic
FIND_FILE(QT_UIC_EXECUTABLE uic
${QTDIR}/bin
${path}
)
@ -42,35 +46,59 @@ IF (WIN32)
# Not sure where to look for Qt under windows
# Assume that QTDIR has been set
FIND_PATH(QT_INCLUDE_PATH qt.h
${QTDIR}/include
)
FIND_PATH(QT_INCLUDE_DIR qt.h
${QTDIR}/include C:/Progra~1/qt/include) )
FIND_LIBRARY(QT_QT_LIBRARY qt
${QTDIR}/lib
)
${QTDIR}/lib C:/Progra~1/qt/lib )
FIND_FILE(QT_MOC_EXE moc.exe
${QTDIR}/bin
${path}
)
FIND_LIBRARY(QT_QTMAIN_LIBRARY qtmain
${QTDIR}/lib C:/Progra~1/qt/lib )
FIND_FILE(QT_UIC_EXE uic.exe
${QTDIR}/bin
${path}
)
FIND_FILE(QT_MOC_EXECUTABLE moc.exe
${QTDIR}/bin C:/Progra~1/qt/bin
${path} )
FIND_FILE(QT_UIC_EXECUTABLE uic.exe
${QTDIR}/bin C:/Progra~1/qt/bin
${path} )
ENDIF (WIN32)
IF (QT_MOC_EXE)
SET ( QT_WRAP_CPP 1 CACHE BOOL "Can we honour the QT_WRAP_CPP command" )
ENDIF (QT_MOC_EXE)
IF (QT_MOC_EXECUTABLE)
SET ( QT_WRAP_CPP "YES")
ENDIF (QT_MOC_EXECUTABLE)
IF (QT_UIC_EXE)
SET ( QT_WRAP_UI 1 CACHE BOOL "Can we honour the QT_WRAP_UI command" )
ENDIF (QT_UIC_EXE)
IF (QT_UIC_EXECUTABLE)
SET ( QT_WRAP_UI "YES")
ENDIF (QT_UIC_EXECUTABLE)
IF(QT_INCLUDE_DIR)
IF(QT_QT_LIBRARY)
SET( QT_LIBRARIES ${QT_LIBRARIES} ${QT_QT_LIBRARY} )
SET( QT_FOUND "YES" )
SET( QT_DEFINITIONS "")
IF (WIN32)
IF (QT_QTMAIN_LIBRARY)
# for version 3
SET (QT_DEFINITIONS -DQT_DLL)
SET (QT_LIBRARIES imm32.lib ${QT_QT_LIBRARY} ${QT_QTMAIN_LIBRARY} )
ELSE (QT_QTMAIN_LIBRARY)
# for version 2
SET (QT_LIBRARIES imm32.lib ws2_32.lib ${QT_QT_LIBRARY} )
ENDIF (QT_QTMAIN_LIBRARY)
ELSE (WIN32)
SET (QT_LIBRARIES ${QT_QT_LIBRARY} )
ENDIF (WIN32)
# Backwards compatibility for CMake1.4 and 1.2
SET (QT_MOC_EXE ${QT_MOC_EXECUTABLE} )
SET (QT_UIC_EXE ${QT_UIC_EXECUTABLE} )
ENDIF(QT_QT_LIBRARY)
ENDIF(QT_INCLUDE_DIR)

View File

@ -1,10 +1,4 @@
# Link in QT
# Use of this file is deprecated.
# Replace any lines that include this file with the line below.
IF (WIN32)
LINK_LIBRARIES( imm32.lib ws2_32.lib)
#Ensure that qt.lib is last
ENDIF (WIN32)
LINK_LIBRARIES( ${QT_QT_LIBRARY})
LINK_LIBRARIES( ${QT_LIBRARIES})

18
Modules/readme.txt Normal file
View File

@ -0,0 +1,18 @@
Note to authors of FindXXX.cmake files
We would like all FindXXX.cmake files to produce consistent variable names.
XXX_INCLUDE_DIR, Where to find xxx.h, etc.
XXX_LIBRARIES, The libraries to link against to use XXX. These should include full paths.
XXX_DEFINITIONS, Definitions to use when compiling code that uses XXX.
XXX_EXECUTABLE, Where to find the XXX tool.
XXX_YYY_EXECUTABLE, Where to find the YYY tool that comes with XXX.
XXX_ROOT_DIR, Where to find the home directory of XXX.
XXX_FOUND, Set to false if we haven't found, or don't want to use XXX.
You do not have to provide all of the above variables. You should provide XXX_FOUND under most circumstances. If XXX is a library, then XXX_INCLUDE_DIR, XXX_LIBRARIES, and XXX_DEFINITIONS should also be defined.
Try to keep as many options as possible out of the cache, leaving at least one option which can be used to disable use of the module, or find a lost library (e.g. XXX_ROOT_DIR)
If you need other commands to do special things (e.g. the QT_WRAP_UI setting in FindQt.cmake) then it should still begin with XXX_. This gives a sort of namespace effect.

View File

@ -99,7 +99,7 @@ void cmQTWrapCPPCommand::FinalPass()
// first we add the rules for all the .h to Moc files
size_t lastClass = m_WrapClasses.size();
std::vector<std::string> depends;
std::string moc_exe = "${QT_MOC_EXE}";
std::string moc_exe = "${QT_MOC_EXECUTABLE}";
// wrap all the .h files
depends.push_back(moc_exe);

View File

@ -118,8 +118,8 @@ void cmQTWrapUICommand::FinalPass()
// first we add the rules for all the .ui to .h and .cxx files
size_t lastHeadersClass = m_WrapHeadersClasses.size();
std::vector<std::string> depends;
std::string uic_exe = "${QT_UIC_EXE}";
std::string moc_exe = "${QT_MOC_EXE}";
std::string uic_exe = "${QT_UIC_EXECUTABLE}";
std::string moc_exe = "${QT_MOC_EXECUTABLE}";
// wrap all the .h files