CMake GTKmm错误-无程序包';gtkmm-3.0';建立
这可能与我的工作有关 我从“简单示例”中复制了代码 我从中复制了cmake说明 我得到的错误是:CMake GTKmm错误-无程序包';gtkmm-3.0';建立,cmake,gtkmm,pkg-config,gtkmm3,Cmake,Gtkmm,Pkg Config,Gtkmm3,这可能与我的工作有关 我从“简单示例”中复制了代码 我从中复制了cmake说明 我得到的错误是: -- Checking for module 'gtkmm-3.0' -- No package 'gtkmm-3.0' found CMake Warning (dev) in CMakeLists.txt: No cmake_minimum_required command is present. A line of code such as cmake_minimum_re
-- Checking for module 'gtkmm-3.0'
-- No package 'gtkmm-3.0' found
CMake Warning (dev) in CMakeLists.txt:
No cmake_minimum_required command is present. A line of code such as
cmake_minimum_required(VERSION 3.10)
should be added at the top of the file. The version specified may be lower
if you wish to support older CMake versions for this project. For more
information run "cmake --help-policy CMP0000".
This warning is for project developers. Use -Wno-dev to suppress it.
-- Configuring done
-- Generating done
-- Build files have been written to: /path-to-files/
这是我的CMakeLists.txt
project(SimpleExample)
find_package(PkgConfig REQUIRED)
set(CMAKE_PREFIX_PATH "/usr/lib/x86_64-linux-gnu/pkgconfig;/usr/share/pkgconfig")
pkg_check_modules(GTKMM gtkmm-3.0)
link_directories(${GTKMM_LIBRARY_DIRS})
include_directories(${GTKMM_INCLUDE_DIRS})
add_executable(SimpleExample SimpleExample.cpp)
target_link_libraries(SimpleExample ${GTKMM_LIBRARIES})
这里的集合(CMAKE_PREFIX_PATH)/usr/lib/x86\u 64-linux-gnu/pkgconfig;/usr/share/pkgconfig)中有一行非常愚蠢的代码,我很确定它不应该在那里,然而,在我的上一个问题中,我绞尽脑汁想弄清楚为什么pkg config
没有找到gtkmm-3.0.pc
文件的正确位置
因此,我进行了一次搜索,试图找出如何在CMake文件中手动设置pkg config
的路径。这就是我想到的。但是它不起作用。CMake变量CMake_前缀_路径和环境变量PKG_配置_路径表示不同的路径:
- CMAKE_PREFIX_路径指向一个或多个程序的安装前缀
- PKG_CONFIG_路径指向
.pc
文件的位置
当CMake希望通过pkg_check_modules命令调用pkg config
时,它通过向CMake_PREFIX_PATH变量中的每个路径添加足够的内容来将CMake_PREFIX_PATH变量的内容转换为pkg_config_PATH(请参见中的分支if(而不是“${额外路径}”STREQUAL“)
lib/pkgconfig
share/pkgconfig
lib32/pkgconfig
或某些发行版的lib32/pkgconfig
- 其他一些特定于系统的充分性
如您所见,您可以在PKG_CONFIG_路径中使用CMAKE_PREFIX_路径中的/usr
获得/usr/share/pkgconfig
但是在PKG_CONFIG_路径中获取/usr/lib/x86_64-linux-gnu/pkgconfig
是非常值得怀疑的
在任何情况下,主机系统本身描述的参数通常通过环境或cmake
参数传递,而不是通过项目的CMakeLists.txt
传递。在给定情况下,命令行
export PKG_CONFIG_PATH="/usr/lib/x86_64-linux-gnu/pkgconfig:/usr/share/pkgconfig"
比设置CMAKE_PREFIX_PATH CMAKE变量更简单(更可靠)。为什么不按照警告消息,在CmakeList.txt
的顶部添加一行,如CMAKE_minimum_required(3.0版)
?此警告消息比生成日志的其他部分加在一起要长…@Tsyvarev,因为它与问题无关?无论如何,我已经添加了它。