Я уже некоторое время сижу на этом и действительно не понимаю, что происходит. У меня проблема с cmake и armadillo/lapack/blas:link armadillo/blas/lapack with cmake (неопределенная ссылка на `dgemv_ ')
Я пытаюсь загрузить armadillo с cmake, скомпилировать его, а затем связать его с моей программой.
Однако, хотя я могу скачать, скомпилировать его и т. Д. У меня проблемы, связанные с моей программой.
я получаю следующую ошибку при связывании исполняемым: undefined reference to `dgemv_'
Так что я знаю, что это LAPACK/Блас вещь, но я не могу понять, что это неправильно.
Ниже перечислены соответствующие детали в моем CMakeLists.txt. Я был бы очень рад, если бы кто-то мог мне помочь. Я близок к тому, чтобы съесть свою клавиатуру из-за разочарования.
ExternalProject_Add(ArmadilloDownload
PREFIX ${LIBRARY_OUTPUT_PATH}/armadillo-7.100.3
DOWNLOAD_COMMAND wget http://sourceforge.net/projects/arma/files/armadillo-7.100.3.tar.xz
CONFIGURE_COMMAND tar -xf ../armadillo-7.100.3.tar.xz -C ../ArmadilloDownload --strip-components=1
BUILD_IN_SOURCE 1
BUILD_COMMAND cmake .
INSTALL_COMMAND make
UPDATE_COMMAND ""
)
set(Armadillo_DIR ${LIBRARY_OUTPUT_PATH}/armadillo-7.100.3/src/ArmadilloDownload)
set(ARMADILLO_LIBRARY ${Armadillo_DIR}/libarmadillo.so)
set(ARMADILLO_INCLUDE_DIR ${Armadillo_DIR}/include/)
include_directories(${ARMADILLO_INCLUDE_DIR})
set(GCC_ARMADILLO_LINK_FLAG "-O1 -llapack -lblas")
SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${GCC_ARMADILLO_LINK_FLAG}")
SET(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} ${GCC_ARMADILLO_LINK_FLAG}")
Вы не должны указать компоновщик флагов таким образом. Посмотрите, как работает CMake, особенно 'target_link_libraries'. – usr1234567
Я думал, что вы можете установить флаги компоновщика (см. [Здесь] (http://stackoverflow.com/questions/11783932/how-to-add-linker-or-compile-flag-in-cmake-file)). Я помещаю эти флаги в 'traget_link_library', но также не работает (такая же ошибка) – DUWUDA
@ usr1234567 Теперь я также попытался использовать' target_compile_options', который также не работает с 'target_compile_options (программа PRIVATE -O1 -llpack -lblas) ' – DUWUDA