Мой проект на C++ продолжает компилироваться и работать под управлением Xcode. Его также следует создавать с помощью CMake. Но это перестало работать после сегодняшнего обновления до Xcode 16.2. Не удается найти стандартные заголовки C++:
Код: Выделить всё
#include
Код: Выделить всё
fatal error: 'iostream' file not found
< /code>
Я предполагаю, что это связано с обновленным C ++ и местоположениями его файлов заголовков. Как я могу снова заставить свою сборку Cmake работать? /p>
cmake_minimum_required(VERSION 3.24)
project(quux LANGUAGES C CXX)
# Specify compiler optimization level
add_compile_options(-O3)
# Need this to use "ranges" in c++20
set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED True)
# Find installed Open3D, which exports Open3D::Open3D
find_package(Open3D REQUIRED)
add_executable(quux)
target_sources(quux PRIVATE main.cpp)
target_link_libraries(quux PRIVATE Open3D::Open3D)
Код: Выделить всё
cmake -DOpen3D_ROOT=${HOME}/open3d_install .. ; make -j 12
Спасибо @Some программисту и @Alan Birtles за предложения. Извините, я забыл упомянуть, что первое, что я попробовал, — это удалить и перестроить каталог сборки CMake. Я попробовал второй раз, будьте уверены:
Код: Выделить всё
cwr@Craigs-M1-MacBook-Pro build % cd ..
cwr@Craigs-M1-MacBook-Pro quux % rm -rf build
cwr@Craigs-M1-MacBook-Pro quux % mkdir build
cwr@Craigs-M1-MacBook-Pro quux % cd build
cwr@Craigs-M1-MacBook-Pro build % cmake -DOpen3D_ROOT=${HOME}/open3d_install .. ; make -j 12
-- The C compiler identification is AppleClang 16.0.0.16000026
-- The CXX compiler identification is AppleClang 16.0.0.16000026
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /Library/Developer/CommandLineTools/usr/bin/cc - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /Library/Developer/CommandLineTools/usr/bin/c++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
CMake Deprecation Warning at /Users/cwr/open3d_install/lib/cmake/Open3D/Open3DConfig.cmake:18 (cmake_policy):
The OLD behavior for policy CMP0072 will be removed from a future version
of CMake.
The cmake-policies(7) manual explains that the OLD behaviors of all
policies are deprecated and that a policy should be set to OLD only under
specific short-term circumstances. Projects should be ported to the NEW
behavior and not rely on setting a policy to OLD.
Call Stack (most recent call first):
CMakeLists.txt:45 (find_package)
-- Found Open3D: /Users/cwr/open3d_install/lib/cmake/Open3D/Open3DConfig.cmake (found version "0.18.0")
-- Configuring done (0.7s)
-- Generating done (0.0s)
-- Build files have been written to: /Users/cwr/Documents/code/quux/build
[ 50%] Building CXX object CMakeFiles/quux.dir/main.cpp.o
In file included from /Users/cwr/Documents/code/quux/main.cpp:37:
In file included from /Users/cwr/Documents/code/quux/quux.h:12:
In file included from /Users/cwr/Documents/code/quux/Agent.h:13:
In file included from /Users/cwr/Documents/code/quux/Vec3.h:14:
/Users/cwr/Documents/code/quux/Utilities.h:18:10: fatal error: 'iostream' file not found
18 | #include
Единственное, что изменилось на моем ноутбуке, было «точечным» обновлением для нового Версия Macos Sonoma. Моя установка Cmake (через Brew) и мой собственный код не изменились. Один ответ дал полезный тест, который проверял то, что я сказал выше: строительство с помощью Xcode (или, как предложенно, компиляция непосредственно из командной строки) работает нормально, используя Cmake нет. < /P>
i Хотелось бы услышать от эксперта по использованию Mac Cmake, который может пролить любой свет.
Подробнее здесь: https://stackoverflow.com/questions/793 ... rsion-16-2