我試圖在Windows 8 我配置的CMakeLists.txt文件,安裝MLPack:鏈接到犰狳庫與CMake的
set(ARMADILLO_LIBRARY "C:\\Program Files (x86)\\armadillo\\lib")
set(ARMADILLO_INCLUDE_DIR "C:\\Program Files (x86)\\armadillo\\include")
然後,當我跑的CMake我有一整系列這樣的警告的:
WARNING: Target "mlpack" requests linking to directory "C:\Program Files (x86)\armadillo\lib". Targets may link only to libraries. CMake is dropping the item.
在\ mlpack-1.0.4的\ src \ mlpack目錄中我發現了另一個CMakeLists與文件:
target_link_libraries(mlpack
${ARMADILLO_LIBRARIES}
${Boost_LIBRARIES}
${LIBXML2_LIBRARIES}
)
我改變(不知道這是一個好主意):跑步讓我有一大堆這樣的錯誤的時候
-- Found Armadillo: C:\Program Files (x86)\armadillo\lib (found suitable version "3.800.2", minimum required is "2.4.2")
-- Found LibXml2: C:\cpp\libraries\libxml2-2.7.8.win32\lib (found suitable version "2.7.8", minimum required is "2.6.0")
-- Boost version: 1.53.0
-- Found the following Boost libraries:
-- program_options
-- unit_test_framework
-- Boost version: 1.53.0
-- Found the following Boost libraries:
-- random
-- Could NOT find Doxygen (missing: DOXYGEN_EXECUTABLE)
-- Configuring done
-- Generating done
-- Build files have been written to: C:/cpp/libraries/mlpack-1.0.4
但現在:
target_link_libraries(mlpack
${Boost_LIBRARIES}
)
link_directories(mlpack
${ARMADILLO_LIBRARIES}
${LIBXML2_LIBRARIES}
)
然後CMake的似乎可以流暢運行:
Linking CXX executable ..\..\..\..\gmm.exe
CMakeFiles\gmm.dir/objects.a(gmm_main.cpp.obj):gmm_main.cpp:(.text+0xb9): undefined reference to `wrapper_dgemv_'
CMakeFiles\gmm.dir/objects.a(gmm_main.cpp.obj):gmm_main.cpp:(.text$_ZN4arma6auxlib10det_lapackIdEET_RKNS_3MatIS2_EEb[__ZN4arma6auxlib10det_lapackIdEET_RKNS_3MatIS2_EEb]+0x115): undefined reference to `wrapper_dgetrf_'
經過調查後似乎與犰狳有關。
任何想法發生了什麼?我想我應該使用armadillo的target_link_libraries,但我不知道如何。
是的,您絕對需要在您自己的CMakeLists.txt中將target_link_libraries()鏈接到Armadillo。你可以張貼你的完整/相關部分CMakeLists.txt – 2013-04-11 03:43:49
Thx很多。我想知道我是否可以真正發佈整個文件,這是相當長的。對於相關的部分,我剛剛找到一行「find_package(Armadillo 2.4.2 REQUIRED)」,後面跟着一行「include_directories($ {ARMADILLO_INCLUDE_DIRS})」。但我是真正的初學者,我可能會錯過某些東西。完整的文件在這裏:http://www.mlpack.org/files/mlpack-1.0.4.tar.gz我只是在文章中描述的變化... – Vince 2013-04-11 04:01:13
添加如下內容:target_link_libraries(gmm.exe $ {} ARMADILLO_LIBRARIES)。看看這是否有效。或者只是使用「gmm」代替「gmm.exe」,然後再次嘗試 – 2013-04-11 06:53:33