我有一个使用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命令中已经出现了错误,所以我认为这与此无关。
1条答案
按热度按时间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中打开一个问题