首页 > 解决方案 > 在 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})

我正在寻求解决问题,但我找不到答案。

谢谢您的帮助。

标签: c++makefilecmake

解决方案


请出示您的 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

推荐阅读