在 Windows 上使用 gettext 的 CMake 项目

问题描述 投票:0回答:2

我有一个使用 gettext 的 CMake 项目,并通过 vcpkg 在我的计算机上安装了 gettext。运行 vcpkg install gettext:x64-windows 给了我这条消息:

The package gettext:x86-windows provides CMake targets:

    find_package(unofficial-gettext CONFIG REQUIRED)
    target_link_libraries(main PRIVATE unofficial::gettext::libintl)

我将其添加到我的 CMakeLists.txt 文件中,当 Visual Studio 2017 尝试从中生成 CMake 缓存时,它会显示:

1> C:\PROGRAM FILES (X86)\MICROSOFT VISUAL STUDIO\2017\COMMUNITY\COMMON7\IDE\COMMONEXTENSIONS\MICROSOFT\CMAKE\CMake\bin\cmake.exe  -G "Ninja" -DCMAKE_INSTALL_PREFIX:PATH="C:\Users\Enno\CMakeBuilds\1f25c7de-1ae7-7131-9c5a-889a4e831935\install\x64-Debug"  -DCMAKE_CXX_COMPILER="C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/VC/Tools/MSVC/14.16.27023/bin/HostX64/x64/cl.exe"  -DCMAKE_C_COMPILER="C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/VC/Tools/MSVC/14.16.27023/bin/HostX64/x64/cl.exe" -DCMAKE_TOOLCHAIN_FILE=C:/vcpkg/scripts/buildsystems/vcpkg.cmake -DCMAKE_BUILD_TYPE="Debug" -DCMAKE_MAKE_PROGRAM="C:\PROGRAM FILES (X86)\MICROSOFT VISUAL STUDIO\2017\COMMUNITY\COMMON7\IDE\COMMONEXTENSIONS\MICROSOFT\CMAKE\Ninja\ninja.exe" "C:\Users\Enno\source\repos\echeck" returned with exit code: 1
CMake Error at CMakeLists.txt:8 (find_package):
  Could not find a package configuration file provided by
  "unofficial-gettext" with any of the following names:
    unofficial-gettextConfig.cmake
    unofficial-gettext-config.cmake
  Add the installation prefix of "unofficial-gettext" to CMAKE_PREFIX_PATH or
  set "unofficial-gettext_DIR" to a directory containing one of the above
  files.  If "unofficial-gettext" provides a separate development package or
  SDK, be sure it has been installed.

该文件存在于 C: cpkg\installed\x64-windows\share\unofficial-gettext\unofficial-gettext-config.cmake。

我已将其添加到我的 CMakeSettings_schema.json 中,但没有什么区别: "cmakeCommandArgs": "-DCMAKE_TOOLCHAIN_FILE=C:/vcpkg/scripts/buildsystems/vcpkg.cmake",

我以前从未见过

unofficial::gettext::libintl
语法,但由于 find_package 命令中已经发生了故障,我认为现在与此无关。我在这里犯了什么错误?

windows visual-studio cmake gettext vcpkg
2个回答
1
投票

目前 vcpkg 使用 vcpkg 拥有的 CMakeLists.txt 来构建 gettext 的一部分(仅 libintl)。由于它是 vcpkg 拥有的 cmake 构建脚本,因此 vcpkg 可以自由导出目标,其中之一是

unofficial::gettext::libintl
可以正确链接到其他 vcpkg 拥有的 cmake 构建中的 libintl。
将来,这些
unofficial
命名空间目标将被删除,因为构建将更改为端口的本机构建(meson/autotools/make)[对于 gettext,这将在 PR https://github.com/microsoft 中完成/vcpkg/pull/11776]。因此,您不应该依赖其中任何一个可用,因为它会将您的构建锁定到 vcpkg。
对于 libintl CMake 有一个
FindIntl.cmake
,应该使用它来代替。如果
find_packe(Intl)
无法正常工作,请在 vcpkg 中提出问题


0
投票

Screenshot of the issue

我正在尝试使用 Cmake 构建具有 Asio 支持的 Audacity。但是,我遇到了这些问题。我对此很陌生。有人可以帮忙吗?

© www.soinside.com 2019 - 2024. All rights reserved.