「 Duplicate File Finder 」というプロジェクトを開発しています。ここでは、ファイルのタイプ、つまりpng、zip、実行可能ファイルなどに関する情報も抽出したいと考えています.libmagic(magic.h)をファイルタイプの検索に使用できることがわかりました。しかし、私がかなり長い間直面している問題は、モジュールをコンパイルするときに magic.h が認識されないことです。私のプロジェクトでは「cmake」ビルド システムを使用しています。CMakeLists.txt ですべてのパラメーターを定義しましたが、システムにインストールされているため、魔法のパスとライブラリを見つけているときにエラーが発生しません。「man libmagic」を実行でき、動作します。以下は私のcmakeファイルです。以下は私の CMakeLists.txt ファイルです。
cmake_minimum_required(VERSION 2.8)
project( duplicateFinder )
set(Boost_USE_STATIC_LIBS OFF)
set(Boost_USE_MULTITHREADED ON)
set(Boost_USE_STATIC_RUNTIME OFF)
set(USE_OPENSSL TRUE)
find_package(Boost 1.53.0 COMPONENTS system filesystem regex thread REQUIRED)
find_package(OpenSSL)
FIND_PATH(SQLITE3_INCLUDE_DIR sqlite3.h)
find_library(SQLITE3_LIBRARY sqlite3)
FIND_PATH(MAGIC_INCLUDE_DIR magic.h)
find_library(MAGIC_LIBRARY magic $ENV{MAGIC_LIB_PATH})
if(NOT MAGIC_INCLUDE_DIR)
message(SEND_ERROR "Failed to find magic.h")
endif()
if(NOT MAGIC_LIBRARY)
message(SEND_ERROR "Failed to find the magic library")
endif()
if(NOT SQLITE3_INCLUDE_DIR)
message(SEND_ERROR "Failed to find sqlite3.h")
endif()
if(NOT SQLITE3_LIBRARY)
message(SEND_ERROR "Failed to find the sqlite3 library")
endif()
if(Boost_FOUND)
include_directories(${Boost_INCLUDE_DIRS})
SET(duff_SOURCES src/run_duff.cpp src/sys_scan.cpp src/duff_utils.cpp)
SET(duff_HEADERS src/run_duff.h src/sys_scan.h src/duff_utils.cpp)
add_executable(bin/dup_finder ${duff_SOURCES} ${duff_HEADERS})
add_definitions( -DBOOST_ALL_NO_LIB )
add_definitions( -DBOOST_ALL_DYN_LINK )
target_link_libraries(bin/dup_finder ${Boost_LIBRARIES} ${Boost_FILESYSTEM_LIBRARY} ${Boost_SYSTEM_LIBRARY} ${Boost_REGEX_LIBRARY} ${Boost_THREAD_LIBRARY} ${OPENSSL_LIBRARIES} ${SQLITE3_LIBRARY} ${MAGIC_LIBRARY} )
endif()
インターネットで徹底的に調査しましたが、問題を解決できませんでした。問題文が理解できることを願っています。この点で誰でも私を助けることができますか?前もって感謝します。