Regardons ce que donne un test complet.
Pour que tout fonctionne il faut écrire ce qui suit dans un fichier FindMALIB.cmake :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
CMAKE_INSTALL_PREFIX/include/MALIB/ et CMAKE_INCLUDE_PATH
find_path(MALIB_INCLUDE_DIR
NAMES malib.h autreFichier.h
PATHS "${MALIB_PREFIX}/include/MALIB/" ${CMAKE_INSTALL_PREFIX}/include/MALIB/
${CMAKE_INCLUDE_PATH}
)
if (MALIB_INCLUDE_DIR)
MESSAGE(STATUS "Found MALIB headers : ${MALIB_INCLUDE_DIR}")
else (MALIB_INCLUDE_DIR)
MESSAGE(FATAL_ERROR "errrrr MALIB headers not found baahhhh bouuuuuu")
endif (MALIB_INCLUDE_DIR)
find_path(PLIB_MATHC_LIBRARY_DIR
NAMES libmalib.a
PATHS "${MALIB_PREFIX}/lib" ${CMAKE_INSTALL_PREFIX}/lib
${CMAKE_INCLUDE_PATH}
)
IF (MALIB_LIBRARY_DIR)
MESSAGE(STATUS "Found lib MALIB : ${MALIB_LIBRARY_DIR}")
ELSE (MALIB_LIBRARY_DIR)
MESSAGE(FATAL_ERROR "errrrr lib MALIB not found baahhhh bouuuuuu")
ENDIF (MALIB_LIBRARY_DIR)
set(MALIB ${MALIB_LIBRARY_DIR}/libplib6_mathc.a)
|
On test si le fichier libmalib.a est dans in des dossiers que l'on propose et on regarde le résultat. Si on a trouvé la lib, on donne sont dossier, si on ne l'a pas trouvé on râle. À la dernière ligne on définit une variable ayant le même nom que la lib en majuscule (convention), comme ça sa simplifie l'écriture des dépendances d'un programme ayant besoin de cette lib :
1
|
target_link_libraries(monprogramme ${MALIB})
|
Et maintenant dans un programme vous pouvez, dans le fichier CMakeLists.txt écrire :
1
2
3
4
5
6
7
8
9
|
project(MonProgramme)
cmake_minimum_required(VERSION 2.6)
set(CMAKE_MODULE_PATH ${MALIB_PREFIX}/CMAKE_MODULES)
find_package(MALIB REQUIRED)
add_executable(monprogramme main.cpp)
target_link_libraries(monprogramme ${MALIB})
|
Vous avez reconnu MALIB_PREFIX qui est le préfixe d'installation de MALIB, CMAKE_MODULE_PATH qui est un dossier ou CMake va chercher les fichier .cmake, et une nouveauté, la commande find_package qui permet d'appeler le fichier .cmake correspondant pour trouver la lib que l'on veut être sûre d'avoir pour compiler le programme monprogramme.
ne vous inquiétez pas, nous ferrons des exemples.
|