2009-10-28 11 views
5

J'ai créé une application simple qui fonctionne bien. Cependant, maintenant je dois lier avec quelques bibliothèques dans le répertoire suivant.liant des bibliothèques tierces

/opt/norton/lib 

Dans mon Makefile je donne les résultats suivants avec des œuvres, mais je dois utiliser CMake

LIBS_PATH = -L/opt/norton/lib 
INC_PATH = -I/opt/norton/inc 

LIBS = -lntctrl 

Dans mon CMakeList.txt j'ai cela, mais ne fonctionne pas je garde gettng l'erreur suivante :

undefined reference to `nt_init' 

Ceci est mon CMakeList.txt

# Includes files 
INCLUDE_DIRECTORIES(/opt/norton/inc) 

# Link libraries 
LINK_DIRECTORIES(/opt/norton/lib) 

# Add the library that is used by nt_init 
TARGET_LINK_LIBRARIES(-lntctrl) 

ADD_LIBRARY(application initialize_nw) 

Un grand merci pour tous les conseils,

Répondre

6

Essayez TARGET_LINK_LIBRARIES(ntctrl), le drapeau -l ne doit pas être utilisé là-bas (deviner d'après ce que je pense)

Voici comment j'écrire le fichier CMake:

include_directories(/opt/norton/inc) 
link_directories(/opt/norton/lib) 
add_executable(application initialize_nw) 
target_link_libraries(application ntctrl) 

Pour montrer quelles sont les lignes de commande réelles exécutées au cours d'une marque, utilisez:

make VERBOSE=1 

Mayb Ceci vous montre la différence entre ce que vous avez exécuté manuellement et les commandes générées par cmake.

+0

Bonjour, merci pour la réponse. Oui, j'ai déjà essayé ça (ntctrl). Dans mon initilaize_nw.c j'ai inclus l'en-tête ntctrllib.h, donc il inclut le fichier d'en-tête car il ne montre aucune erreur qu'il ne peut pas trouver. Ai-je raison de dire que TARGET_LINK_LIBRARIES est correct à utiliser? Merci beaucoup. – ant2009

+0

Bonjour, j'ai toujours un problème lorsque je spécifie la bibliothèque ntctrl dans TARGET_LINK_LIBRARIES (ntctrl). La bibliothèque se trouve dans le répertoire/opt/norton/lib. Comment le TARGET_LINK ... sait-il qu'il doit chercher dans le répertoire opt/norton/lib? Merci. – ant2009

+0

LINK_DIRECTORIES est bien, peut-être mettre la ligne ADD_LIBRARY avant le TARGET_LINK_LIBRARIES, ou même utiliser ADD_EXECUTABLE à la place (me semble de l'appellation que l'application n'est pas une lib) – jdehaan

Questions connexes