我最近下载了从GTK +网站下载的gtk + all-in-one软件包,工作正常,允许我使用MinGW编译器在Windows上构建gtk +应用程序.
但是,现在在lib/pkgconfig中查看pkg-config的*.pc文件时,我注意到了一些奇怪的东西.以下是glib-2.0的开头如何:
prefix=c:/devel/target/059c48de6b739307c37648aba3005b29
exec_prefix=${prefix}
libdir=${exec_prefix}/lib
includedir=${prefix}/include
Run Code Online (Sandbox Code Playgroud)
我的gtk +文件夹驻留在与C:\不同的驱动器上,我根本没有C:\ devel文件夹.那么这个前缀代表什么呢?如果我决定编写*.pc文件以便轻松链接我自己的应用程序,我会使用什么前缀?
令人惊讶的是,使用 pkg-config按预期工作并返回gtk +文件夹中的库和标头的正确路径.
我在lubuntu 12.10发行版上安装了opencv.然后,当我尝试编译使用opencv的代码时,它说它无法找到它.所以我在终端尝试:
pkg-config --cflags --libs opencv
Run Code Online (Sandbox Code Playgroud)
它回答我,它找不到opencv.但文件安装在/ usr/lib中.我不明白为什么找不到它们.
我是,试图使用pkg-config在windows(msvc)中找到gstreamer lib
pkg-config gstreamer-0.10 --cflags --libs
但我得到这样的结果
Package gstreamer-0.10 was not found in the pkg-config search path.
Perhaps you should add the directory containing `gstreamer-0.10.pc'
to the PKG_CONFIG_PATH environment variable
No package 'gstreamer-0.10' found
Run Code Online (Sandbox Code Playgroud)
一个.pc like是在安装库时创建的(通过使用RPM,deb或其他二进制打包系统或从源代码编译自动生成).我在gstreamer目录中找不到.pc文件.
我应该只创建一个包含所有必要细节的.pc文件.
prefix=C:\Program Files (x86)\OSSBuild\GStreamer\v0.10.7
exec_prefix=${prefix}
libdir=${exec_prefix}\lib
includedir=${prefix}\sdk\include\gstreamer-0.10
toolsdir=${exec_prefix}\bin
pluginsdir=${exec_prefix}\lib\gstreamer-0.10
datarootdir=${prefix}\share
datadir=${datarootdir}
girdir=${datadir}/gir-1.0
typelibdir=${libdir}/girepository-1.0
Name: GStreamer
Description: Streaming media framework
Requires: glib-2.0, gobject-2.0, gmodule-no-export-2.0, gthread-2.0, libxml-2.0
Version: 0.10.35
Libs: -L${libdir} -lgstreamer-0.10
Cflags: -I${includedir}
Run Code Online (Sandbox Code Playgroud)
或者还有其他方法可以做到这一点,还是我错过了什么?
希望你能帮忙.谢谢你花时间阅读问题.
好吧,我这样做是为了找到解决方案为什么我not found在我的waf配置为gstreamer 获取消息
conf.check_cfg(atleast_pkgconfig_version='0.0.0')
conf.check_cfg(package='gstreamer-0.10', uselib_store='GSTREAMER', args='--cflags --libs', …Run Code Online (Sandbox Code Playgroud) 我在 cmake 中使用 pkgconfig 链接到外部库。即使存在一个 external_package.pc 文件(显然具有正确的信息),cmake 也会向我抛出一个错误。
CMakeLists 文件看起来像这样:
project(juicer)
set(VERSION 1.0)
# Find packages
set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake")
find_package(Tracter REQUIRED)
Run Code Online (Sandbox Code Playgroud)
FindTracer 文件如下所示:
find_package(PkgConfig)
pkg_check_modules(TRACTER REQUIRED tracter)
Run Code Online (Sandbox Code Playgroud)
错误:
-- checking for module 'tracter'
-- package 'tracter' not found
CMake Error at /usr/share/cmake-2.8/Modules/FindPkgConfig.cmake:279 (message):
A required package was not found
Call Stack (most recent call first):
/usr/share/cmake-2.8/Modules/FindPkgConfig.cmake:333 (_pkg_check_modules_internal)
cmake/FindTracter.cmake:10 (pkg_check_modules)
CMakeLists.txt:22 (find_package)
Run Code Online (Sandbox Code Playgroud)
我是 CMake 的新手,非常感谢您的帮助。谢谢阿克沙特
当我执行以下命令时:
pkg-config --cflags opencv
Run Code Online (Sandbox Code Playgroud)
我收到以下消息:
Package opencv was not found in the pkg-config search path.
Perhaps you should add the directory containing `opencv.pc'
to the PKG_CONFIG_PATH environment variable
No package 'opencv' found
Run Code Online (Sandbox Code Playgroud)
我在Cent OS 6上,已经找到了Internet上针对Linux Ubuntu的解决方案,并且在堆栈中,但没有针对Cent OS
我尝试在OpenCV规范下
PKG_CONFIG_PATH=/usr/share/opencv/lib/pkgconfig:${PKG_CONFIG_PATH}
export PKG_CONFIG_PATH
Run Code Online (Sandbox Code Playgroud)
仍然不起作用。我如何确定OpenCV也安装在该目录中,我使用了whereis opencv并触发了我/usr/share/
我正在尝试将静态库(GLFW)链接到我正在构建的库中.我在我的CMakeLists.txt文件中有以下内容,以便执行此操作:
pkg_search_module(GLFW REQUIRED glfw3)
include_directories(${GLFW_INCLUDE_DIRS})
target_link_libraries(${LIBRARY_NAME} ${GLFW_STATIC_LIBRARIES})
Run Code Online (Sandbox Code Playgroud)
链接我的库时,我收到以下错误: ld: library not found for -lglfw3
然而,pkg-config --libs glfw3在控制台中运行会给出:
-L/usr/local/lib -lglfw3
Run Code Online (Sandbox Code Playgroud)
所以我知道安装了GLFW库.当我尝试使用CMake进行链接时,为什么找不到库?
我试图在Qt5.7上构建gst-plugins-bad时遇到此错误:
Package Qt5Core was not found in the pkg-config search path.
Perhaps you should add the directory containing `Qt5Core.pc'
to the PKG_CONFIG_PATH environment variable
Run Code Online (Sandbox Code Playgroud)
在Qt 5.5中,曾经存在一个~/Qt/5.5/clang_64/lib/pkgconfig/Qt5Core.pc文件.但是,Qt5.7安装我只有一个Qt5OpenGLExtensions.pc和Qt5UiTools.pc内部~/Qt/5.7/clang_64/lib/pkgconfig.所有的pkg-configs都去了哪里?
我为python 3.6创建了虚拟环境,并尝试安装crc16软件包。我收到此错误:
/usr/bin/ld: cannot find -lpython3.6m
Run Code Online (Sandbox Code Playgroud)
我尝试使用修复它
export PKG_CONFIG_PATH=/path/to/python3.6/binaries/usr/local/lib/pkgconfig
Run Code Online (Sandbox Code Playgroud)
我用
$ pkg-config --libs python3
-L/usr/local/lib -lpython3.6m
Run Code Online (Sandbox Code Playgroud)
但不幸的是,它仍然无法正常工作。
使用以下命令将Python 3.6安装在自定义前缀中 make install DESTDIR=/path/to/destdir
我的项目是shared库,我想使用的设置创建安装目标pkg-config。
目前,它仅根据一个非常简单的规则进行构建:
add_library(mylib SHARED src/mylib.cxx)
在这里,我将继续进行配置,因为每个安装规则都应取决于预配置的安装路径和标志。为了简单起见,假设目标将安装到include and lib目录中,并且预先配置的.pc规则类似于-lmylib -I/...include -L/....lib
如何为cmake的installation目标配置pkg-config支持?我想它没有内置的支持,pkg-config我需要您的帮助才能找到合适的解决方案。
我正在尝试在Windows上构建ry / v8worker2。一切正常,直到我运行为止go test,然后抱怨pkg-config设置。
这是生成的pkg-config文件:
Name: v8
Description: v8
Version: xxx
Cflags: -IC:\Users\andyrea\go\src\github.com\reaandrew\v8worker2\v8\include
Libs: out/v8build/obj/v8_monolith.lib
Run Code Online (Sandbox Code Playgroud)
这go test是执行时的输出:
go build github.com/reaandrew/v8worker2: invalid flag in pkg-config --libs: out/v8build/obj/v8_monolith.lib
FAIL github.com/reaandrew/v8worker2 [build failed]
Run Code Online (Sandbox Code Playgroud)
就像我说的那样,整个编译过程都很好,并且创建了文件,但是最后有些不正确。我尝试对build.py进行的唯一修改,使其在Windows上可以正常运行,如下所示:
diff --git a/build.py b/build.py
index 2cb5e6a..6f482c8 100755
--- a/build.py
+++ b/build.py
@@ -82,7 +82,7 @@ GCLIENT_SOLUTION = [
]
def main():
- lib_fn = os.path.join(prebuilt_path, platform_name(), "libv8_monolith.a")
+ lib_fn = os.path.join(root_path.replace("\\","/"),"/out/v8build/obj/v8_monolith.lib")
if args.rebuild or not os.path.exists(lib_fn):
print("Rebuilding V8")
lib_fn = Rebuild()
@@ -99,9 +99,9 @@ …Run Code Online (Sandbox Code Playgroud)