Я пытаюсь очистить устаревший C -FORTRAN FLOSS код , и я сталкиваюсь с довольно странной ошибкой. В top CMakeLists.txt
file добавлено несколько библиотек / папок, добавленных через add_subdirectory
. Выполнение команды cmake ..
в папке build
успешно генерирует MakeFile
s (за исключением некоторых незначительных предупреждений , которые могут быть ложноположительными). Однако при компиляции с make
я получаю странную ошибку:
Scanning dependencies of target umfpack
mingw32-make[2]: Leaving directory '/path/to/elmerfem/build'
mingw32-make[2]: Entering directory '/path/to/elmerfem/build'
[ 46%] Building C object umfpack/src/umfpack/CMakeFiles/umfpack.dir/umfpack_timer.c.o
mingw32-make[2]: *** No rule to make target '/mingw64/include/cblas.h', needed by 'umfpack/src/umfpack/CMakeFiles/umfpack.dir/umfpack_tictoc.c.o'. Stop.
mingw32-make[2]: Leaving directory '/path/to/elmerfem/build'
mingw32-make[1]: *** [CMakeFiles/Makefile2:265: umfpack/src/umfpack/CMakeFiles/umfpack.dir/all] Error 2
mingw32-make[1]: Leaving directory '/path/to/elmerfem/build'
mingw32-make: *** [Makefile:163: all] Error 2
, которую я не знаю, как отлаживать. В этом случае /mingw64/include/cblas.h
существует, и предыдущие выходные данные CMake:
-- Looking for Fortran sgemm
-- Looking for Fortran sgemm - found
-- Found BLAS: /mingw64/lib/libopenblas.dll.a
-- Looking for Fortran cheev
-- Looking for Fortran cheev - found
-- A library with LAPACK API found.
-- ------------------------------------------------
-- BLAS library: /mingw64/lib/libopenblas.dll.a
-- LAPACK library: /mingw64/lib/libopenblas.dll.a
Показать, что BLAS
и LAPACK
были успешно найдены.
Буду признателен, если вы поможете мне понять, в чем проблема и как я могу ее исправить. Спасибо за вашу поддержку заранее.
Среда:
- MSYS2: MSYS_NT-10.0-18363
- Windows Версия 1909
- cmake версия 3.15.5
- GNU Make 4.3
- g cc .exe (Rev1, построена в проекте MSYS2) 9.3.0
PS1. Я только что протестировал код на macOS, и он без проблем скомпилирован. Так что, похоже, это проблема Windows / MSYS2, специфическая c.
PS2. Мне сказали, что я должен установить библиотеку suitesparse
, поэтому я сделал
pacman -S mingw64/mingw-w64-x86_64-suitesparse
это не помогло.
PS3. Также следуя этому твиту , я должен уточнить, что я использую пакеты MSYS2 для CMake и GNU Make, как объяснено здесь и здесь .