Я собрал несколько библиотек (gtk3
, qt5
, ...) через коллекцию портов в FreeBSD 11.2
. Чтобы проверить их, я просто собрал минимальные примеры. Каждый раз, когда компоновщик жалуется на отсутствие этих библиотек.
Поправьте меня, если я ошибаюсь, но в FreeBSD
обычные пакеты (те, которые настроены с помощью pkg
) устанавливаются в /usr/include
и /usr/lib
, однако порты по умолчанию лежат в /usr/local/include
и /usr/local/lib
.
Есть ли простой способ указать компилятору искать в этих каталогах, вместо того, чтобы иметь огромные команды компиляции с опциями -I
и -L
?
Спасибо за ваши ответы.
Редактировать
Вот мой CMakeLists.txt
:
cmake_minimum_required(VERSION 3.12)
project(gtk-test)
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/modules/")
find_package(GTK3 REQUIRED)
include_directories(${GTK3_INCLUDE_DIRS})
link_directories(${GTK3_LIBRARY_DIRS})
add_executable(gtk-test gtk-test.c)
target_link_libraries(gtk-test ${GTK3_LIBRARIES})
Я решил проблему с зависимостями, взяв следующий скрипт CMake
:
https://github.com/eiskaltdcpp/eiskaltdcpp/blob/master/cmake/FindGTK3.cmake
Однако всплыла другая проблема:
[100%] Linking C executable gtk-test
/usr/lib/crt1.o: In function `_start':
crt1.c:(.text+0x91): undefined reference to `main'
collect2: error: ld returned 1 exit status
Редактировать
Я тупой, я даже не заметил, что в образце не было функции main
. Он работает нормально, за исключением того, что по умолчанию CMake
не может найти библиотеку GTK3
и ее зависимости.
Вот содержимое моих конфигурационных скриптов CMake:
Qt5
Qt53DQuick
Qt53DRender
Qt5DataVisualization
Qt5Location
Qt5OpenGLExtensions
Qt5QuickTest
Qt5SerialBus
Qt5UiPlugin
Qt5WebKit
Qt5XmlPatterns
Qt53DAnimation
Qt53DQuickAnimation
Qt5Bluetooth
Qt5Designer
Qt5Multimedia
Qt5Positioning
Qt5QuickWidgets
Qt5SerialPort
Qt5UiTools
Qt5WebKitWidgets
assimp-4.1
Qt53DCore
Qt53DQuickExtras
Qt5Charts
Qt5Gamepad
Qt5MultimediaWidgets
Qt5PrintSupport
Qt5Script
Qt5Sql
Qt5WebChannel
Qt5WebSockets
harfbuzz
Qt53DExtras
Qt53DQuickInput
Qt5Concurrent
Qt5Gui
Qt5Network
Qt5Qml
Qt5ScriptTools
Qt5Svg
Qt5WebEngine
Qt5Widgets
libxml2
Qt53DInput
Qt53DQuickRender
Qt5Core
Qt5Help
Qt5Nfc
Qt5Quick
Qt5Scxml
Qt5Test
Qt5WebEngineCore
Qt5X11Extras
Qt53DLogic
Qt53DQuickScene2D
Qt5DBus
Qt5LinguistTools
Qt5OpenGL
Qt5QuickControls2
Qt5Sensors
Qt5TextToSpeech
Qt5WebEngineWidgets
Qt5Xml