Configuring cairo-0.12.0...
setup.exe: The program pkg-config version >=0.9.0 is required but it could not
be found.
cabal: Error: some packages failed to install:
cairo-0.12.0 failed during the configure step. The exception was:
ExitFailure 1
Run Code Online (Sandbox Code Playgroud)
那我怎样才能在Windows上获得pkg-config或者如何安装cairo呢?
好的,我已经在 Windows 8 下安装了我的整个 Go 开发环境,还有 MinGW。我正在使用LiteIde。
C:/Go/bin/go.exe build [C:/Users/Alyx/Go/Hi]
pkg-config --cflags sdl
exec: "pkg-config": executable file not found in %PATH%
Error: process exited with code 2.
Run Code Online (Sandbox Code Playgroud)
但是后来我收到了“pkg-config”的错误,起初我没有安装。(我正在尝试使用列出全屏模式的测试来编译 SDL 绑定)
然后我将它全部设置在 C:\MinGW\Bin 文件夹(pkg-config.exe 和额外的 dll)中。
但是后来还是不行。进入 CMD,输入其名称“未识别为内部...”
然后我想我必须将一个环境变量放入Windows。我用 "C:\MinGW\bin" 值尝试了 %PATH% 。没有。然后我尝试了 PKG_CONFIG_PATH。没有。
所以我不确定我需要什么环境变量,或者是否有任何类型的变量可以放入 LiteIde。除了那个idk还能做什么。
为了在 Windows 上移植 Linux 程序(使用 cygwin 和 gcc),我试图正确找到提供pkg-config文件的库(在我的情况下,这些库是由 Graphviz 带来的)。
直接的方法适用于 Linux:
find_package(PkgConfig)
pkg_check_modules(LIB_GRAPHVIZ libcdt libgvc libgraph)
Run Code Online (Sandbox Code Playgroud)
在 Windows 上,我使用安装程序(cygwin 路径:)手动安装了 Graphviz /cygdrive/c/graphviz。为了找到这些pkg-config文件,我导出了PKG_CONFIG_PATH变量,以便.pc在配置 CMake 之前找到这些文件:
export PKG_CONFIG_PATH=/cygdrive/c/graphviz/pkgconfig
cmake $srcdir
Run Code Online (Sandbox Code Playgroud)
配置工作正常,但是.pc文件没有适当的前缀(这会导致包含和链接目录无效):
$ pkg-config --variable=prefix libgraph
/c/graphviz-mingw/local.2.20.3
Run Code Online (Sandbox Code Playgroud)
关于pkg-config,解决方案是使用--define-variable参数调用它,例如这里是如何获得有效的includedir:
$ pkg-config --define-variable=prefix=/cygdrive/c/graphviz --variable=includedir libgraph
/cygdrive/c/graphviz/include/graphviz
Run Code Online (Sandbox Code Playgroud)
我的问题:如何在 CMake 中调用它时提供--define-variable参数pkg-config?
PkgConfig定义PKG_CONFIG_EXECUTABLE指向pkg-config程序的那个;我试图将我的选项附加到这个变量:
set(PKG_CONFIG_EXECUTABLE "${PKG_CONFIG_EXECUTABLE} --define-variable=/cygdrive/c/graphviz")
Run Code Online (Sandbox Code Playgroud)
但pkg_check_modules()未能检测到我的库。我的理解是调用将execute_process()的内容 …
我正在尝试使用glfw3构建一个小项目,但无论我做什么,我都无法通过pkgconfig来设置GLFW_LIBRARIES.
这是我的CMakeList.txt
cmake_minimum_required(VERSION 3.3)
project(LearnGLSL)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
if (CMAKE_BUILD_TYPE STREQUAL "")
set(CMAKE_BUILD_TYPE Debug)
endif()
if(CMAKE_BUILD_TYPE STREQUAL "Debug")
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}/build/debug")
set(PROJECT_BINARY_DIR "${CMAKE_SOURCE_DIR}/build/debug")
endif(CMAKE_BUILD_TYPE STREQUAL "Debug")
file(MAKE_DIRECTORY ${PROJECT_BINARY_DIR})
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR})
find_package(OpenGL REQUIRED)
find_package(PkgConfig REQUIRED)
pkg_check_modules(GLFW REQUIRED glfw3)
include_directories(
${OPENGL_INCLUDE_DIR}
${GLFW_INCLUDE_DIRS}
)
set(SOURCE_FILES main.cpp gl_core_4_3.cpp)
message(WARNING "${GLFW_LIBRARIES}")
add_executable(LearnGLSL ${SOURCE_FILES})
target_link_libraries(LearnGLSL ${OPENGL_gl_LIBRARY} ${GLFW_LIBRARIES})
add_custom_command(TARGET LearnGLSL POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy_directory
${CMAKE_SOURCE_DIR}/assets
${PROJECT_BINARY_DIR}
COMMENT "Copy resources to build tree")
Run Code Online (Sandbox Code Playgroud)
这是安装glfw3的地方
-- Installing: /usr/local/include/GLFW
-- Installing: /usr/local/include/GLFW/glfw3native.h
-- Installing: /usr/local/include/GLFW/glfw3.h
-- Installing: /usr/local/lib/cmake/glfw/glfw3Config.cmake
-- Installing: …Run Code Online (Sandbox Code Playgroud) 是否有基于输出设置-rpath或 libtool 的最佳实践?我必须诉诸技巧吗?-Rpkg-configsed
我已经通过brew安装了pkg-config和libusb
现在如果我这样做
pkg-config --cflags --libs libusb
我收到以下消息
在 pkg-config 搜索路径中找不到软件包 libusb。也许您应该将包含“libusb.pc”的目录添加到 PKG_CONFIG_PATH 环境变量中找不到软件包“libusb”
所以我按照这篇文章做了
导出 PKG_CONFIG_PATH="$PKG_CONFIG_PATH:/usr/local/Cellar/libusb/1.0.20/lib/pkgconfig"
但我仍然有问题。我缺少什么?
我使用的是 MAC OSX El Capitan
我在几个 C 项目(projectA和projectB)中使用介子,其中projectB链接到来自projectA. 在 中,我使用介子projectA/meson.build编写了一个文件,该文件已按预期安装。pkg-config projectA.pcjoin_paths(get_option('prefix'), get_option('libdir'), 'pkgconfig')
在projectB/meson.build我用来dependency('projectA')查找projectA.pc文件。
当我使用自定义安装前缀来构建时projectA,projectB构建时meson无法找到。有没有办法指定from ?projectA.pcprojectBPKG_CONFIG_PATHprojectB/meson.build
这个问题通过这个最小的例子重现:
项目A/介子.build:
project('projectA', 'c', version: '1')
pkg = import('pkgconfig')
pkg.generate(name : 'projectA',
description: 'ProjectA',
version: meson.project_version())
Run Code Online (Sandbox Code Playgroud)
项目B/介子.build:
project('projectB', 'c', version: '1')
dep = dependency('projectA')
Run Code Online (Sandbox Code Playgroud)
命令:
meson buildA projectA --prefix=$PWD/install
(cd buildA && ninja install)
#[0/1] Installing files.
#Installing /tmp/test/buildA/meson-private/projectA.pc to …Run Code Online (Sandbox Code Playgroud) 我正在研究 gtkmm 文档。我首先尝试编译“简单示例”。这是代码。也可以在这里找到。
/// SimpleExample.cpp
#include <gtkmm.h>
int main(int argc, char *argv[])
{
auto app =
Gtk::Application::create(argc, argv,
"org.gtkmm.examples.base");
Gtk::Window window;
window.set_default_size(200, 200);
return app->run(window);
}
Run Code Online (Sandbox Code Playgroud)
我尝试使用以下方法编译它
g++ SimpleExample.cpp -o SimpleExample `pkg-config gtkmm-3.0 --cflags --libs`
Run Code Online (Sandbox Code Playgroud)
应该根据文档工作。(参见链接页面末尾。)
跑步pkg-config gtkmm-3.0 --cflags --libs产生
Package gtkmm-3.0 was not found in the pkg-config search path.
Perhaps you should add the directory containing `gtkmm-3.0.pc'
to the PKG_CONFIG_PATH environment variable
No package 'gtkmm-3.0' found
Run Code Online (Sandbox Code Playgroud)
我正在运行 Debian 9 Stretch。我安装gtkmm了
sudo apt update …Run Code Online (Sandbox Code Playgroud) 我一直在尝试在 mac os x 上安装 pycairo。我收到一条错误消息,
最初我得到了'pkg-config' not found。通过brew安装后,我得到了Package cairo was not found in the pkg-config search path。原则上我可以尝试编辑搜索路径,但由于这是通过 pip 进行的,所以我希望这一切都能得到解决。有没有办法告诉 pip 将内容放在 pkg-config 知道要查找的地方?
这是完整的消息。
> pip install pycairo
Collecting pycairo
Using cached https://files.pythonhosted.org/packages/48/20/5e83af98eb897935bf7dc39455e892ba866feebb9b7c3b392982866f9958/pycairo-1.18.1.tar.gz
Building wheels for collected packages: pycairo
Building wheel for pycairo (setup.py) ... error
ERROR: Complete output from command /Applications/anaconda/bin/python -u -c 'import setuptools, tokenize;__file__='"'"'/private/var/folders/f2/bzrj46j11gzdk19j91tp1sq80000gq/T/pip-install-lahb8lq4/pycairo/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' bdist_wheel -d /private/var/folders/f2/bzrj46j11gzdk19j91tp1sq80000gq/T/pip-wheel-scnvplas --python-tag cp36:
ERROR: running bdist_wheel
running build
running build_py
creating …Run Code Online (Sandbox Code Playgroud) 我有一个基于堆栈的项目,它依赖于几个 C 库。其中一个 C 库 zlib 可从原生 NixOS 包中获得,我可以将其放入 stack.yaml 的 nix 部分:
nix:
enable: true
packages:
- "zlib"
Run Code Online (Sandbox Code Playgroud)
另一个不是nixpkgs 的一部分。堆栈文档建议使用 中的nix部分的替代方法stack.yaml是“编写 shell.nix”而无需详细说明。
于是写了一篇,坚持以zlib为例:
{ pkgs ? import <nixpkgs> { } }:
pkgs.mkShell {
buildInputs = [
pkgs.pkgconfig
pkgs.zlib
pkgs.stack
];
}
Run Code Online (Sandbox Code Playgroud)
这为我提供了 zlib 的工作 pkg-config:
[nix-shell:~/Work/PrivateStorage/PaymentServer]$ pkg-config --modversion zlib
1.2.11
Run Code Online (Sandbox Code Playgroud)
但是,似乎并没有让堆栈能够找到库:
[nix-shell:~/Work/PrivateStorage/PaymentServer]$ stack build
zlib-0.6.2: configure
Progress 1/7
-- While building package zlib-0.6.2 using:
/home/exarkun/.stack/setup-exe-cache/x86_64-linux-nix/Cabal-simple_mPHDZzAJ_2.4.0.1_ghc-8.6.5 --builddir=.stack-work/dist/x86_64-linux-nix/Cabal-2.4.0.1 configure --with-ghc=/nix/store/zfpm9bai9gj8vs09s2i2gkhvgsjkx13z-ghc-8.6.5/bin/ghc --with-ghc-pkg=/nix/store/zfpm9bai9gj8vs09s2i2gkhvgsjkx13z-ghc-8.6.5/bin/ghc-pkg --user --package-db=clear --package-db=global --package-db=/home/exarkun/.stack/snapshots/x86_64-linux-nix/lts-14.1/8.6.5/pkgdb …Run Code Online (Sandbox Code Playgroud) pkg-config ×10
c++ ×2
cmake ×2
haskell ×2
windows ×2
c ×1
cabal ×1
cairo ×1
compilation ×1
cygwin ×1
glfw ×1
go ×1
gtkmm ×1
gtkmm3 ×1
library-path ×1
libusb-1.0 ×1
meson-build ×1
nixos ×1
pip ×1
pycairo ×1
python ×1
rpath ×1
sdl ×1