La liaison de Tatou bibliothèques avec CMake

Je suis en train d'installer MLPack sur windows 8.
- Je configurer le CMakeLists.txt fichier:

set(ARMADILLO_LIBRARY "C:\\Program Files (x86)\\armadillo\\lib")
set(ARMADILLO_INCLUDE_DIR "C:\\Program Files (x86)\\armadillo\\include")

Puis quand j'ai couru CMake j'avais toute une série d'avertissement comme ceux-ci:

WARNING: Target "mlpack" requests linking to directory "C:\Program Files (x86)\armadillo\lib".  Targets may link only to libraries.  CMake is dropping the item.

Dans \mlpack-1.0.4\src\mlpack répertoire j'ai trouvé un autre CMakeLists fichier avec:

target_link_libraries(mlpack
  ${ARMADILLO_LIBRARIES}
  ${Boost_LIBRARIES}
  ${LIBXML2_LIBRARIES}
)

que j'ai changé (pas sûr si c'était une bonne idée):

target_link_libraries(mlpack
  ${Boost_LIBRARIES}
)
link_directories(mlpack
  ${ARMADILLO_LIBRARIES}
  ${LIBXML2_LIBRARIES}
)

puis CMake semble être en cours d'exécution en douceur:

-- 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

mais maintenant, lors de l'exécution de faire j'ai des tonnes de telles erreurs :

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_'

qui, après enquête, semble être lié au Tatou.

Une idée de ce qui se passe ? Je suppose que je devrais utiliser target_link_libraries pour Tatou mais je ne suis pas sûr de savoir comment.

Oui, vous avez certainement besoin target_link_libraries() lien vers Tatou dans votre propre CMakeLists.txt. Vous pouvez poster votre complet/des parties pertinentes de CMakeLists.txt
Thx a lot. Je me demande si je peux vraiment écrire la totalité du fichier, il est assez long. Pour les pièces, j'ai juste trouvé une ligne avec "find_package(Armadillo 2.4.2 OBLIGATOIRE)" et, plus tard, une ligne avec "include_directories(${ARMADILLO_INCLUDE_DIRS})". Mais je suis vrai débutant, je pourrais certainement manquer quelque chose. Les fichiers complets sont ici:mlpack.org/files/mlpack-1.0.4.tar.gz je viens de faire les modifications décrites dans le post ...
ajouter quelque chose comme ceci: target_link_libraries(gmm.exe ${ARMADILLO_LIBRARIES}). Voir si cela fonctionne. Ou simplement l'utiliser "gmm" au lieu de "gmm.exe" et essayez à nouveau
essayé avec .exe et cmake se plaint gmm.exe n'a pas été construit avec ce projet. Sans .exe, cmake se plaint gmm n'a pas été construit dans ce répertoire ...

OriginalL'auteur Vince | 2013-04-11