c++ - 在 OSX 上编译 C++ 时找不到库
问题描述
我正在尝试设置我的 Mac (Mojave 10.14.6) 以运行 C++ 应用程序,并且我使用 Homebrew 作为包管理器。
在我的第一个非常基本的图形应用程序(使用 gtk)上,我在编译时收到了一个错误:
ld: library not found for -lgtk-quartz-2.0
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[2]: *** [src/mainDemo] Error 1
make[1]: *** [src/CMakeFiles/mainDemo.dir/all] Error 2
make: *** [all] Error 2
但是,在运行时pkg-config --libs gtk+-2.0
,我看到它-lgtk-quartz-2.0
存在:
-L/usr/local/Cellar/gtk+/2.24.32_3/lib -L/usr/local/Cellar/pango/1.44.6/lib -L/usr/local/Cellar/harfbuzz/2.6.1/lib -L/usr/local/Cellar/atk/2.34.1/lib -L/usr/local/Cellar/cairo/1.16.0_2/lib -L/usr/local/Cellar/gdk-pixbuf/2.38.2/lib -L/usr/local/Cellar/glib/2.62.0/lib -L/usr/local/opt/gettext/lib -lgtk-quartz-2.0 -lgdk-quartz-2.0 -framework Cocoa -lpangocairo-1.0 -lpango-1.0 -lharfbuzz -latk-1.0 -lcairo -lgdk_pixbuf-2.0 -lgio-2.0 -lgobject-2.0 -lglib-2.0 -lintl
Make文件如下:
find_package(PkgConfig)
pkg_check_modules(GTK2 gtk+-2.0 REQUIRED)
add_executable (mainDemo main.cpp)
target_link_libraries (mainDemo ${GTK2_LIBRARIES})
target_compile_options(mainDemo PUBLIC ${GTK2_CFLAGS_OTHER} -std=c++11)
target_include_directories(mainDemo PUBLIC ${GTK2_INCLUDE_DIRS})
我正在寻求解决问题,但我找不到答案。
谢谢您的帮助。
解决方案
请出示您的 CMakeFileLists.txt 文件。请检查您的 CMakeFileLists.txt 应该有以下几行:
PKG_CHECK_MODULES(GTK2 REQUIRED gtk+-2.0)
INCLUDE_DIRECTORIES(${GTK2_INCLUDE_DIRS})
LINK_DIRECTORIES(${GTK2_LIBRARY_DIRS})
ADD_DEFINITIONS(${GTK2_CFLAGS_OTHER})```
If they are not worth adding
推荐阅读
- .net - 连接 AS400 时出错无法加载 DLL 'cwbdc.dll'
- python - 如何阻止我的进程空闲或被杀死?
- javascript - 可以将数字或数字数组作为参数并返回字符串或字符串数组的函数
- dialogflow-es - 为什么在操作和参数 IS LIST 中会自动检查某些参数名称?
- c# - 当 C# 类的方法默认为非虚拟时,为什么 C# 类默认不密封?
- boost - 加入线程:“避免资源死锁”
- javascript - 使用 webpack 为 react-image-gallery 导入 CSS 时出错
- javascript - JQuery获取最接近给定X,Y坐标的td
- java - 如何使用多个 idp 租户 URL 创建动态 SSO
- python - 关于为 sudo 设置 python 可执行变量的困惑