【发布时间】:2018-06-08 10:49:38
【问题描述】:
我有一个 c++ 库 (retdec-cpp),我使用 Cmake 3.10.0 构建和安装了它
我想在 Visual Studio 2015 项目中使用这个库(需要这个特定版本)。我知道需要单独构建调试和发布,所以我关注了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}
)
当我在 Visual Studio 中构建它时,它一直显示此错误:
LNK1104:cannot open file retdec.lib
我的 CMakeLists 显然有问题。
如何使用 Cmake 将此库包含在我的 Visual Studio 2015 项目中?
【问题讨论】:
-
retdec.lib在您的链接目录之一中吗?我不希望会是这样。它们看起来像源文件夹。 -
您需要为现有目标调用 target_link_libraries,即您应该使用
prog作为第一个参数来调用它。 -
如果文件夹中存在该库,那么您可能正在混合使用 32 位和 64 位。
-
我确实有 prog 作为第一个参数,但由于某种原因被删掉了。
-
文件夹中不存在该库
标签: visual-studio-2015 cmake linker-errors