Difference between revisions of "CMake:How To Find Installed Software"

From KitwarePublic
Jump to navigationJump to search
Line 3: Line 3:


CMake helps you with this by providing so-called modules. Let's say you want to use the PNG-Library.  
CMake helps you with this by providing so-called modules. Let's say you want to use the PNG-Library.  
 
<pre>
FIND_PACKAGE(PNG)
FIND_PACKAGE(PNG)


Line 13: Line 13:


ENDIF(PNG_FOUND)
ENDIF(PNG_FOUND)
 
</pre>


Every module is provided in the form Find<name>.cmake, they are located in the CMake module directory, on UNIX usualy <tt>/usr/local/share/CMake/Modules/ </tt> It is then used in the CMakeLists.txt with the FIND_PACKAGE(<name>) command. For details see the regular CMake documentation.
Every module is provided in the form Find<name>.cmake, they are located in the CMake module directory, on UNIX usualy <tt>/usr/local/share/CMake/Modules/ </tt> It is then used in the CMakeLists.txt with the FIND_PACKAGE(<name>) command. For details see the regular CMake documentation.
Every module will define the following variables:
Every module will define the following variables:
<name>_FOUND
* <name>_FOUND
<name>_INCLUDE_DIR or <name>_INCLUDES
* <name>_INCLUDE_DIR or <name>_INCLUDES
<name>_LIBRARY or <name>_LIBRARIES
* <name>_LIBRARY or <name>_LIBRARIES

Revision as of 17:44, 6 February 2006

If your software uses external libraries (i.e. libraries not coming with your software), you don't know in advance where its headers and libraries will be located on the system where your software will be compiled. Depending on the location appropriate include directories and library search paths will have to be added to the compile commands.

CMake helps you with this by providing so-called modules. Let's say you want to use the PNG-Library.

FIND_PACKAGE(PNG)

IF(PNG_FOUND)
   INCLUDE_DIRECTORIES(${PNG_INCLUDE_DIR})

   ADD_EXECUTABLE(imageviewer main.c image.c)
   TARGET_LINK_LIBRARIES(imageviewer ${PNG_LIBRARY})

ENDIF(PNG_FOUND)

Every module is provided in the form Find<name>.cmake, they are located in the CMake module directory, on UNIX usualy /usr/local/share/CMake/Modules/ It is then used in the CMakeLists.txt with the FIND_PACKAGE(<name>) command. For details see the regular CMake documentation. Every module will define the following variables:

  • <name>_FOUND
  • <name>_INCLUDE_DIR or <name>_INCLUDES
  • <name>_LIBRARY or <name>_LIBRARIES