1

log4cppを自分のプロジェクトにリンクしようとしています。私はCMakeを使用していますが、その方法がわかりません。

Log4cppはprojectfolder/log4cpp /にインストールされます(bin / include / 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/

次に、makeを実行すると、次のエラーが発生します。

/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")

log4cppがなくても、すべてのビルドとコンパイルが正常に機能することを追加します(cmakeを使用してからmakeを使用)。

どんな助けでも大歓迎です

4

1 に答える 1

2

独自の CMakeLists.txt を含むサブディレクトリとして共通ディレクトリを追加する場合、既に含まれているディレクトリを継承する場合は、呼び出すINCLUDE_DIRECTORIES前に呼び出す必要があります。ADD_SUBDIRECTORY

于 2012-05-14T11:23:48.697 に答える