Я разрабатываю приложение для доступа к камере. Проект написан на C ++, и я использую CMake для его упаковки.
Чтобы развернуть проект на Mac, я использую команду ниже, а затем открываю проект в Xcode:
cmake -G Xcode ../src
Он работал до последнего обновления, когда начал жаловаться на:
[access] This app has crashed because it attempted to access
privacy-sensitive data without a usage description. The app's
Info.plist must contain an NSCameraUsageDescription key with
a string value explaining to the user how the app uses this data.
Program ended with exit code: 9
Итак, я создал новый файл Info.plist со следующим содержимым:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist SYSTEM "file://localhost/System/Library/DTDs/PropertyList.dtd">
<plist version="0.9">
<dict>
<key>CFBundleIconFile</key>
<string></string>
<key>NSCameraUsageDescription</key>
<string>This app requires to access your camera
to retrieve images and perform the demo</string>
</dict>
</plist>
Мой вопрос: что я должен добавить в CMakeLists.txt, чтобы взять этот файл и поместить его в нужное место? И ... возможно ли, что cmake -G Xcode
правильно включит его в проект Xcode?
РЕДАКТИРОВАТЬ Следуя рекомендациям, я попробовал это:
# Compile files:
add_executable(fpv
main.cpp
files.cpp
files.hpp
more-files.cpp
more-files.hpp
)
# Link files:
target_link_libraries(fpv
fpv-lib
${GTKMM_LIBRARIES}
${OpenCV_LIBS} )
# Lets bundle it:
set_target_properties(fpv PROPERTIES
FRAMEWORK TRUE
FRAMEWORK_VERSION C
MACOSX_FRAMEWORK_IDENTIFIER com.cmake.dynamicFramework
MACOSX_FRAMEWORK_INFO_PLIST ${CMAKE_CURRENT_SOURCE_DIR}/Info.plist
# "current version" in semantic format in Mach-O binary file
VERSION 16.4.0
# "compatibility version" in semantic format in Mach-O binary file
SOVERSION 1.0.0
# XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY "Jean-Michel Gonet"
)
РЕДАКТИРОВАТЬ Чтобы быть уверенным в правильности Info.plist, я вручную добавил его в проект Xcode:
- Добавлен Info.plist в качестве источника в проекте.
- Выделено в навигаторе проекта.
- Переименовал его (!) В Info.cpp, чтобы я мог включить его в цель.
- Переименовал его обратно в Info.plist.
- Запустил приложение, которое спрашивало моего разрешения на доступ к камере.
А потом все заработало.
Но мне все равно хотелось бы иметь конфигурацию проекта в CMake.