Связывание библиотек портов под FreeBSD - PullRequest
0 голосов
/ 29 августа 2018

Я собрал несколько библиотек (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
...