Я использую cmake для создания моего проекта C++, который использует библиотеку, расположенную в моем каталоге «/ usr/local/bin /». Соответствующая часть в CMakeList.txt гласит:Библиотека CHECK_LIBRARY_EXISTS с зависимостями
CHECK_INCLUDE_FILES("/usr/local/include/fann.h" HAVE_FANN_HEADER)
CHECK_LIBRARY_EXISTS(fann fann_get_errno "/usr/local/lib/" HAVE_FANN_LIB)
if(${HAVE_FANN_HEADER} AND ${HAVE_FANN_LIB})
заголовок найден без проблем библиотека пока нет. Глядя в CMakeError.txt показывает:
`/usr/bin/cc -DCHECK_FUNCTION_EXISTS=fann_get_errno CMakeFiles/cmTryCompileExec2973046031.dir/CheckFunctionExists.c.o -o cmTryCompileExec2973046031 -L/usr/local/lib -rdynamic -lfann -Wl,-rpath,/usr/local/lib
/usr/local/lib/libfann.so: undefined reference to 'sin'
/usr/local/lib/libfann.so: undefined reference to 'exp'
/usr/local/lib/libfann.so: undefined reference to 'cos'
/usr/local/lib/libfann.so: undefined reference to 'log'
/usr/local/lib/libfann.so: undefined reference to 'pow'
/usr/local/lib/libfann.so: undefined reference to 'sqrt'
/usr/local/lib/libfann.so: undefined reference to 'floor'`
в последующем, если-заявлении второй переменной, поэтому не определено.
Я подозреваю, что это связано с тем, что тестовая программа не связана со стандартной математической библиотекой. Однако в моей основной программе libm.so будет связан.
Как исправить связь программы тестирования cmake?
Я был бы рад любым комментарии Спасибо
Arne
Лично я с этим справиться с помощью пользовательского find_package вызова (http://www.cmake.org/Wiki/CMake:How_To_Find_Libraries), который также будет убедиться, что все зависимости от Фэнн найдены , Пример этого можно найти на странице https://github.com/jrdi/fann-box/blob/master/cmake/FindFANN.cmake (нет аффилиации, не пишите и не пытайтесь), а ссылки против математики в Linux enviroment – IdeaHat