Работая на Mac, у меня есть каталог /Users/ken/vsc/catch, в котором находится мой проект. Оно строит. Затем я скопировал все содержимое этого каталога в /Users/ken/prog24/Catchwater. Оно не строится. Компилятор не может найти #include , а cmake find_package(FLTK REQUIRED) не находит пакет. Я заметил, что этот файл заголовка существует в /opt/homebrew/Cellar/fltk/1.3.9/include/FL, но не находится ни в каком пути в /opt/homebrew/include. Означает ли это неправильную установку с помощью доморощенного продукта?
Прочитав еще немного документации, я отправился на поиски файлов с именем FindFLTK.cmake . Я нашел два:
/opt/homebrew/Cellar/cmake/3.29.4/share/cmake/Modules/FindFLTK.cmake
/usr/local/Cellar/cmake/ 3.28.1/share/cmake/Modules/FindFLTK.cmake
diff показывает, что они идентичны. На самом деле существует еще два экземпляра FindFLTK.cmake, спрятанных глубоко в пакете приложений приложения Matlab. Наверняка CMake достаточно умен, чтобы не заглядывать туда, верно?
Ищу информацию о том, как это диагностировать. И любопытно: /usr/local/Cellar — это неожиданный путь, учитывая то, что я видел о доморощении. Похоже ли это на устаревшую установку, которую необходимо удалить?
Cmake версии 3.29.4,
MacOS 14.2.1
Вот CMakeLists.txt:
cmake_minimum_required(VERSION 3.5)
project(Catchwater)
set(CMAKE_PREFIX_PATH "/opt/homebrew")
find_package(FLTK REQUIRED)
include_directories(${FLTK_INCLUDE_DIRS} . ./FromGLOW ./Pipeworks ./fluidSim ./common /opt/homebrew/include)
link_directories(${FLTK_LIBRARY_DIRS})
find_library(GLUT GLUT)
if (NOT GLUT)
message(FATAL_ERROR "GLUT is missing")
endif()
message(STATUS FLTK_INCLUDE_DIRS=${FLTK_INCLUDE_DIRS})
add_executable(Catchwater
Pipeworks/main.cpp Pipeworks/Catchwater.cpp Pipeworks/Flow.cpp Pipeworks/PipeType.cpp
Pipeworks/Text.cpp Pipeworks/fltkbasicgl.cpp Pipeworks/Spherical.cpp
fluidSim/fluidSolver.cpp fluidSim/ fluidSim/particle.cpp fluidSim/sceneGrid.cpp
fluidSim/surface.cpp fluidSim/triBoxOverlap.cpp
common/Tools.cpp common/V3.cpp common/quat.cpp common/Matrix.cpp common/mat16fv.cpp
common/vec3fv.cpp common/vec4fv.cpp fromGLOW/glowVectorAlgebra.cpp )
add_compile_definitions(GL_SILENCE_DEPRECATION)
target_compile_options(Catchwater PRIVATE -Wno-deprecated-declarations -Wno-writable-strings -Wno-return-type -Wno-parentheses)
target_compile_features(Catchwater PUBLIC cxx_std_11)
target_link_libraries(Catchwater ${FLTK_LIBRARIES} ${GLUT})
Вывод cmake (работает под расширением Cmake Tools VSCode):
[main] Configuring project: Catchwater
[proc] Executing command: /opt/homebrew/bin/cmake --no-warn-unused-cli -DCMAKE_BUILD_TYPE:STRING=Debug -DCMAKE_EXPORT_COMPILE_COMMANDS:BOOL=TRUE -S/Users/ken/prog24/Catchwater -B/Users/ken/prog24/Catchwater/build -G "Unix Makefiles"
[cmake] Not searching for unused variables given on the command line.
[cmake] -- FLTK_INCLUDE_DIRS=
[cmake] -- Configuring done (0.2s)
[cmake] -- Generating done (0.0s)
[cmake] -- Build files have been written to: /Users/ken/prog24/Catchwater/build
Подробнее здесь: https://stackoverflow.com/questions/786 ... ll-fragile