我正在使用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'`
在隨後的if語句中,第二個變量因此未定義。
我懷疑這是因爲測試程序沒有與標準的數學庫鏈接。但是在我的主程序中,libm.so將被鏈接。
如何解決cmake測試程序的鏈接問題?
我會很高興有任何意見 謝謝
阿恩
就個人而言,我處理這個使用一個自定義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 2014-12-03 14:24:11