在Windows上使用gettext的CMake项目

8wtpewkr  于 4个月前  发布在  Windows
关注(0)|答案(1)|浏览(45)

我有一个使用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命令中已经出现了错误,所以我认为这与此无关。

ki1q1bka

ki1q1bka1#

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

相关问题