2012-05-14 2 views
1

Я пытаюсь связать log4cpp с моим проектом. Я использую CMake, и я не могу понять, как это сделать.Связывание библиотеки log4cpp с проектом cmake

log4cpp является установка на projectfolder/log4cpp/(бен/включать/Lib/... в нем)

Я использую следующий Findlog4cpp.cmake:

IF (LOG4CPP_FOUND) 
    SET(LOG4CPP_FIND_QUIETLY TRUE) 
ENDIF (LOG4CPP_FOUND) 

FIND_PATH(LOG4CPP_INCLUDE_DIR log4cpp/FileAppender.hh 
    "./log4cpp/include/" 
) 

FIND_LIBRARY(LOG4CPP_LIBRARIES 
    NAMES liblog4cpp.so 
    PATHS "./log4cpp/lib" 
) 

SET(LOG4CPP_FOUND 0) 
IF(LOG4CPP_INCLUDE_DIR) 
    IF(LOG4CPP_LIBRARIES) 
    SET(LOG4CPP_FOUND 1 CACHE INTERNAL "log4cpp found") 
    IF (NOT LOG4CPP_FIND_QUIETLY) 
     MESSAGE(STATUS "Found Log4CPP") 
    ENDIF (NOT LOG4CPP_FIND_QUIETLY) 
    ENDIF(LOG4CPP_LIBRARIES) 
ENDIF(LOG4CPP_INCLUDE_DIR) 

MARK_AS_ADVANCED(
    LOG4CPP_INCLUDE_DIR 
    LOG4CPP_LIBRARIES 
) 

и в моих CMakeLists. TXT я называю это:

... 
FIND_PACKAGE(log4cpp REQUIRED) 
INCLUDE_DIRECTORIES(${LOG4CPP_INCLUDE_DIR}) 
SET(LIBS ${LOG4CPP_LIBRARIES} ${LIBS}) 

MESSAGE("############################# ${LOG4CPP_LIBRARIES}") 
MESSAGE("############################# ${LOG4CPP_INCLUDE_DIR}") 
... 

выход:

-- Found Log4CPP 
############################# /SOMEPATH/projectfolder/log4cpp/lib/liblog4cpp.so 
############################# /SOMEPATH/projectfolder/log4cpp/include 
-- Configuring done 
-- Generating done 
-- Build files have been written to: /SOMEPATH/projectfolder/ 

Тогда, когда я запускаю сделать у меня на следующие ошибки:

/SOMEPATH/projectfolder/common/Common.h:24:31: error: log4cpp/Category.hh: No such file or directory 
/SOMEPATH/projectfolder/common/Common.h:25:35: error: log4cpp/FileAppender.hh: No such file or directory 
/SOMEPATH/projectfolder/common/Common.h:26:34: error: log4cpp/BasicLayout.hh: No such file or directory 

я только включены заголовки в common.h (#include «log4cpp/xxx.hh»)

добавить, что все сборки и компиляции работает отлично (с CMake затем сделать) без log4cpp

Любая помощь будет принята с благодарностью

ответ

2

Если вы хотите добавить свой общий каталог как подкаталог со своим собственным CMakeLists.txt, вам нужно позвонить INCLUDE_DIRECTORIES, прежде чем вы вызовете ADD_SUBDIRECTORY, если вы хотите, чтобы уже включенные каталоги были переданы.

+0

Большое спасибо! Я был проиндексирован, делая INCLUDE_DIRECTORIES log4cpp после ADD_SUBDIRECTORY проекта. –