CMake无法链接到vcpkg库。

4

我在vcpkg中安装了一个新库,即ITK,现在我正在尝试编译其指南中提供的第一个代码示例。我通过vcpkg进行安装,因此跳过了安装部分(在该指南中提供),并立即在Visual Studio中创建了一个新的cmake项目。

+ ItkProjects
    - ItkProjects
        - main.cpp
        - CMakeLists.txt  #1
    - CMakeLists.txt   #2

CMakeLists.txt #2

cmake_minimum_required (VERSION 3.8)

project ("ItkProjects")

# Include sub-projects.
add_subdirectory ("ItkProjects")

CMakeLists.txt #1

cmake_minimum_required (VERSION 3.8)

find_package(ITK CONFIG REQUIRED)

include_directories(${ITK_INCLUDE_DIRS})

add_executable (ItkProjects "main.cpp")

target_link_libraries(ItkProjects ${ITK_LIBRARIES})

main.cpp

#include "itkImage.h"

using namespace std;

int main()
{
    using ImageType = itk::Image<unsigned char, 3>;

    ImageType::Pointer image = ImageType::New();

    return EXIT_SUCCESS;
}

CMake已经成功配置和生成,但是在编译时出现以下错误:

ninja : 错误 : '/lib/double-conversion.lib' 文件缺失且无法找到其相关规则以进行构建, 而该文件是 'ItkProjects/ItkProjects.exe' 需要的

我确定该文件位于 D:\vcpkg\installed\x64-windows\lib(我的安装路径)中,但我不确定为什么 ninja 无法链接它。请帮忙解决。


2
关于 /lib/double-conversion.lib 中前导 / 的说明:这意味着 Ninja 搜索确切的绝对路径,而不是在其前面添加任何内容。可能,ITK 的 vcpkg 包存在问题。 - Tsyvarev
在 GitHub 上发现了一个问题 https://github.com/microsoft/vcpkg/issues/6975 - Mohit
今天我正在使用ITK + vcpkg + Visual Studio解决同样的错误。 - drescherjm
2个回答

3
您是否尝试使用vcpkg的cmake工具运行cmake,如下所示:
cmake CMakeLists.txt "-DCMAKE_TOOLCHAIN_FILE=D:\src\vcpkg\scripts\buildsystems\vcpkg.cmake"

如果我理解得正确,这将有助于添加正确的文件夹名称。在这里找到了这个链接:使用vcpkg和cmake

我按照vcpkg目标建议进行了更改,这使得情况变得有些有趣,因为在使用Visual Studio CMake配置时它会给出许多“未定义的外部符号”错误,但是当我使用“cmake-gui”进行配置时,它可以编译成功。 - Mohit

0

找到 "vcpkg/scripts/buildsystems/vcpkg.cmake" 文件。搜索 "VS_GLOBAL_VcpkgEnabled" 并将属性从 false 更改为 true。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接