2017-12-27 22 views
0

私はC++のライブラリを持っている(retdec-CPP)、とのVisual Studio 2015を使用して(私は、Visual Studio 2015のプロジェクトでこのライブラリを使用するこの特定のバージョンをCMakeの3.10.0私が構築cmakeの

を使用してインストール必要です)。私は、デバッグとリリースを別々にビルドする必要があることを理解しているので、私はthis guideを追跡しました。

今、私はcmakeのを使用して、私のVisual Studioプロジェクトでは、このC++ライブラリを使用したいが、私はこのそれは今どのように見えるか

CmakeLists.txt

を書くことに問題抱えている:

project(prog CXX) 
cmake_minimum_required(VERSION 3.6) 

find_package(Threads) 


set(RETDEC_SRC_DIR "C:/Users/kkkkk/Desktop/retdec-cpp") 
set(RETDEC_BUILD_DIR "C:/Users/kkkkk/Desktop/retdec-cpp/build") 

#added : 
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin") 
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib") 
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib") 
# 

include_directories(SYSTEM "${RETDEC_SRC_DIR}/include") 
link_directories(
    "${RETDEC_BUILD_DIR}/debug/src/retdec" 
    "${RETDEC_BUILD_DIR}/debug/third_party/src/cpp-netlib-build/libs/network/src" 
    "${RETDEC_BUILD_DIR}/debug/src/json-cpp-build/src/lib_json" 
    "${RETDEC_BUILD_DIR}/release/src/retdec" 
    "${RETDEC_BUILD_DIR}/release/third_party/src/cpp-netlib-build/libs/network/src" 
    "${RETDEC_BUILD_DIR}/release/src/json-cpp-build/src/lib_json" 

) 


add_executable(prog prog.cpp) 
target_link_libraries(
retdec 
    boost_filesystem 
    boost_system 
    boost_thread 
    boost_chrono 
    boost_date_time 
    boost_atomic 
    ssl 
    crypto 
    cppnetlib-uri 
    cppnetlib-client-connections 
    jsoncpp 
    ${CMAKE_THREAD_LIBS_INIT} 

) 


LNK1104:私は、このエラーを表示し続け、Visual Studioでそれを構築することができますファイルを開けませんretdec.lib

間違った何かがで明らかにあり、私のCMakeLists。

Cmakeを使用してVisual Studio 2015プロジェクトにこのライブラリを含めるにはどうすればいいですか?

+0

あなたのリンクディレクトリの1つに 'retdec.lib'がありますか?私はそれが事実であるとは思わないでしょう。代わりにソースフォルダのように見えます。 – drescherjm

+0

既存のターゲットに対してtarget_link_librariesを呼び出す必要があります。つまり、最初の引数として 'prog'を使用して呼び出す必要があります。 – vre

+0

そのライブラリがフォルダ内に存在する場合は、32ビットと64ビットが混在している可能性があります。 – drescherjm

答えて

0

エラーからの問題:あなたはlink_directories()呼び出しで指定されたディレクトリのすべては、あなたがの内にリンクしようとしているretdec.libを含めるようには見えないという事実から

LNK1104:cannot open file retdec.lib

結果target_link_libraries()機能です。

ソリューションは単純です:

  • retdec.libの場所を検索し、すでにリンクしたフォルダのいずれかに置く(私はあなたのlink_directoriesでアイテムをスポットが大切コール:"${RETDEC_BUILD_DIR}/release/src/retdec"はこれでした?名前で判断すると、libファイルではなくsrcファイルのディレクトリのようですが、代わりに"${RETDEC_BUILD_DIR}/release/lib"のようなものを探していますか?)。
  • retdec.libの場所を見つけて、そのディレクトリをlink_directories()リストの追加として追加することができます。
関連する問題