我在Mac上使用QtCreator和CMake进行c ++开发,在更新到Xcode 7.0后,CMake似乎坏了,运行CMake后我得到了这个警告:
在/usr/local/Cellar/cmake/HEAD/share/cmake/Modules/Platform/Darwin-Initialize.cmake:128的CMake警告(消息):忽略CMAKE_OSX_SYSROOT值:
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk
因为该目录不存在.调用堆栈(最近一次调用):/ usr/local/Cellar/cmake/HEAD/share/cmake/Module/CMakeSystemSpecificInitialize.cmake:18(include)CMakeLists.txt:3(项目)
和构建,我收到此错误:
***没有规则来制作目标`/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/System/Library/Frameworks/Accelerate.framework'
我知道Xcode 7.0已经删除了MacOSX10.10.sdk并添加了MacOSX10.11.sdk,所以我认为可能是我的cmake太旧了,我用自制软件更新了我的cmake到3.3.2但是仍然无法工作,是吗有人知道怎么修这个东西吗?谢谢!
我正在尝试使用cmake构建一个子项目(它不是一个xcode项目,甚至不是iphone的应用程序,结果是跨平台的控制台可执行文件,其中#includes一些继承自C++抽象类,用objective-c ++编写)
我正在使用本指南链接mac os框架:http://www.vtk.org/Wiki/CMake: HowToUseExistingOSXFrameworks
而这个宏:
macro(ADD_FRAMEWORK fwname appname)
find_library(FRAMEWORK_${fwname}
NAMES ${fwname}
PATHS ${CMAKE_OSX_SYSROOT}/System/Library
PATH_SUFFIXES Frameworks
NO_DEFAULT_PATH)
if( ${FRAMEWORK_${fwname}} STREQUAL FRAMEWORK_${fwname}-NOTFOUND)
MESSAGE(ERROR ": Framework ${fwname} not found")
else()
TARGET_LINK_LIBRARIES(${appname} ${FRAMEWORK_${fwname}})
MESSAGE(STATUS "Framework ${fwname} found at ${FRAMEWORK_${fwname}}")
endif()
endmacro(ADD_FRAMEWORK)
Run Code Online (Sandbox Code Playgroud)
这是CMakeLists.txt中的重要部分
project(myprojectname)
........
add_executable(mytarget src/mytarget.cpp)
add_framework(CoreMedia mytarget)
add_framework(CoreVideo mytarget)
add_framework(AVFoundation mytarget)
add_framework(Foundation mytarget)
........
Run Code Online (Sandbox Code Playgroud)
这就是我在尝试构建时所拥有的:
WARNING: Target "mytarget" requests linking to directory "/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.0.sdk/System/Library/Frameworks/CoreMedia.framework". Targets may link only to libraries. CMake is dropping the item.
WARNING: Target "mytarget" requests …Run Code Online (Sandbox Code Playgroud) 我有一个包含数千个源文件的大型 C++ 代码库。我想override在合适的地方添加关键字。我的一些明显被覆盖的函数实际上并没有覆盖基类中的任何函数,我想抓住这些或至少让它们脱颖而出。
我尝试手动完成,但代码库太大。我尝试使用 clang-modernize,但它没有提供有用的说明。我还担心它无法理解为 Visual Studio 编写的代码库。
如何将 override 关键字添加到我的代码库中,而无需在任务上花费数周或更长时间?
我需要从CMSampleBufferRef 获取UIImage来自未压缩的图像数据.我正在使用代码:
captureStillImageOutput captureStillImageAsynchronouslyFromConnection:connection
completionHandler:^(CMSampleBufferRef imageSampleBuffer, NSError *error)
{
// that famous function from Apple docs found on a lot of websites
// does NOT work for still images
UIImage *capturedImage = [self imageFromSampleBuffer:imageSampleBuffer];
}
Run Code Online (Sandbox Code Playgroud)
http://developer.apple.com/library/ios/#qa/qa1702/_index.html是imageFromSampleBuffer功能链接.
但它不能正常工作.:(
有一种jpegStillImageNSDataRepresentation:imageSampleBuffer方法,但它提供压缩数据(好吧,因为JPEG).
UIImage捕获静止图像后,如何使用最原始的非压缩数据创建?
也许,我应该为视频输出指定一些设置?我目前正在使用这些:
captureStillImageOutput = [[AVCaptureStillImageOutput alloc] init];
captureStillImageOutput.outputSettings = @{ (id)kCVPixelBufferPixelFormatTypeKey : @(kCVPixelFormatType_32BGRA) };
Run Code Online (Sandbox Code Playgroud)
我注意到,输出有一个默认值AVVideoCodecKey,即AVVideoCodecJPEG.是否可以以任何方式避免,或者甚至在拍摄静止图像时是否重要?
我在那里找到了一些东西:来自相机的原始图像数据,如"645 PRO",但我只需要一个UIImage,而不使用OpenCV或OGLES或其他第三方.
我已将XCode更新为4.5(使用iOS 6)并安装了最新的命令行工具.在此之前,我总是拥有最新的Clang版本
/Applications/XCode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin
Run Code Online (Sandbox Code Playgroud)
(clang和clang ++二进制文件),但是现在,随着最后一次更新,它们已经消失,我只有gcc和llvm的东西.我已经在我的Mac上检查了'铿锵'的垃圾箱,并找到了一个
/Applications/XCode.app/Contents/Developer/Toolchains/XCodeDefault.xctoolchain/usr/bin
Run Code Online (Sandbox Code Playgroud)
但为什么呢?首先,为什么我在前一个文件夹中没有clang,它始终是,第二,它是用作'clang的默认位置'这个xctoolchain文件夹的有效方式(例如,对于项目存储库中的cmake)
编辑:对于Xcode 5及更多,clang再次出现在.xctoolchain文件夹中
我需要在继承C++类,这与iPhone摄像头视频录制(获得作品使用的Objective-C++代码CMSampleBufferRef通过其他本地Objective-C类Wrapper用CMSampleBufferDelegate).
的AVCaptureVideoOutput,我有自己的工作dispatch_queue_t callbackQueue,所以,当我想从我得到的最后一帧Wrapper类,我需要锁定callbackQueue,使其等到复制将完成.
据我所知,已完成dispatch_sync,同步captureOutput.callbackQueue.但我不能让这段代码工作:
// .mm
frame_t MyCppClass::getLastFrame()
{
dispatch_sync(pCaptureVideoDataOutput.sampleBufferCallbackQueue, ^{ // error: no matching function for call to 'dispatch_sync'
CVImageBufferRef imageBuffer = CMSampleBufferGetImageBuffer(wrapperInstance->currentBuffer);
CVPixelBufferLockBaseAddress(imageBuffer,0);
// doing copying frame data from buffer...
CVPixelBufferUnlockBaseAddress(imageBuffer, 0);
}); // error: control may reach end of non-void block
return frame;
}
// .h
@interface Wrapper : NSObject <AVCaptureVideoDataOutputSampleBufferDelegate> {
CMSampleBufferRef currentBuffer;
}
@end
// .mm
@implementation …Run Code Online (Sandbox Code Playgroud) objective-c objective-c++ grand-central-dispatch ios avcapture
我想在一些条件检查后处理一些代码.首先是一些变量必须是true(我有一个Key-Value Observer分配给它).第二 - 如果该变量尚未变为true一段时间(例如5秒),则永远不要处理变量并只处理代码.
我带来了一个明显的解决方案,我认为这个解决方案很糟糕:while()每次检查true条件和时间都会在另一个调度队列中进行无限循环.所有这些代码都包含在另一个调度队列中......好吧,对我来说并不好看.
我想做的伪代码草案:
WHEN (5 seconds are gone || getCurrentDynamicExpr() == true) {
processStuff();
}
Run Code Online (Sandbox Code Playgroud)
什么是正确而简单的方法呢?
编辑
这里看起来很混乱......要更具体一点:
我想,当它集中捕捉镜头,所以我要检查AVCaptureDevice的isAdjustingFocus属性(我使用AVCaptureStillImageOutput),然后捕获了一枪.5秒钟是..好吧,如果它没有聚焦,那么出现问题,所以无论如何都要拍照.
我很抱歉混淆,认为这是非常普遍的事情..
我想在CMake中解析/处理传递的控制台参数,所以如果我在控制台中运行它:
cmake -DCMAKE_BUILD_TYPE=Release -DSOME_FLAG=1 ..
Run Code Online (Sandbox Code Playgroud)
我想获得-DCMAKE_BUILD_TYPE=Release和-DSOME_FLAG=1来自这里面的CMake的脚本(通过了所有其他参数)并保存它们的地方.
我想要它的原因是通过自定义CMake脚本(后面调用execute_process(cmake <something>))传递所有参数,例如
cmake -DCMAKE_BUILD_TYPE=Release -P myscript.cmake
Run Code Online (Sandbox Code Playgroud) ios ×4
cmake ×3
objective-c ×3
xcode ×2
argc ×1
argv ×1
avcapture ×1
avfoundation ×1
c++ ×1
clang ×1
frameworks ×1
linker ×1
macos ×1
overriding ×1
xcode4.5 ×1
xcode7 ×1