Как получить каталог неявных ссылок libstdcxx переносимым способом в CMake

На заднем плане наш проект должен работать с разными версиями GCC (ABI может быть несовместимым) и несколько версий GCC установлены на нашем сервере сборки. Мы используем проект-обертку, чтобы установить LD_LIBRARY_PATHподготовить окружающую среду export LD_LIBRARY_PATH=/path/to/gcclib/ и запустите наше приложение в сценарии оболочки.

Поскольку используются различные разновидности gcc / g ++, мы хотим знать, есть ли простой способ получить неявный путь к библиотеке, который libstdc ++. так связано против. Например, один из инструментов GCC установлен в /opt/gcc4/gcc4.7/bin/g++ и libstdc ++. так можно найти в /opt/gcc4/gcc4.7/lib/ в то время как другой вариант GCC может быть найден в / USR / местные / бен / г ++ а также /usr/lib/libstdc++.so.

0

Решение

Я полагаю, вы указываете абсолютный путь при настройке CMAKE_{C,CXX}_COMPILER вары. В этом случае вы можете использовать его для получения библиотеки dir:

get_filename_component(GCC_PATH ${CMAKE_C_COMPILER} PATH)
#now ${GCC_PATH} contains "/opt/gcc4/gcc4.7/bin", for example
set(LIBSTD_PATH "${GCC_PATH}/../lib")

Для системного компилятора вы можете использовать if заявление:

if(GCC_PATH STREQUAL /usr/local/bin)
set(LIBSTD_PATH "/usr/lib")
endif()
1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector