Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
CMake GTKmm错误-无程序包';gtkmm-3.0';建立_Cmake_Gtkmm_Pkg Config_Gtkmm3 - Fatal编程技术网

CMake GTKmm错误-无程序包';gtkmm-3.0';建立

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

可能与我的工作有关

我从“简单示例”中复制了代码

我从中复制了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_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,因为它与问题无关?无论如何,我已经添加了它。