微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在Windows上使用gettext的CMake项目

如何解决在Windows上使用gettext的CMake项目

我有一个使用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:\ vcpkg \ 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命令中发生,因此我认为目前不相关。我这是怎么了?

解决方法

当前,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中打开一个问题

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。