我的大学开始教授包含OpenGL编程的课程.他们让我们使用FreeGLUT为OpenGL创建窗口和上下文,但我在lynda.com上找到了一个关于OpenGL的在线课程,他们使用GLFW而不是FreeGLUT.
所以我想知道我应该使用哪一个,两者之间有什么区别?
我想使用 cmake 来构建我的项目,我的 CMakeLists.txt 非常简单:
cmake_minimum_required(VERSION 3.20)
project(YuvParallelProcess)
message("$(PROJECT_SOURCE_DIR)")
include_directories($(PROJECT_SOURCE_DIR)/inc)
link_directories($(PROJECT_SOURCE_DIR)/lib/libyuv)
add_executable(YuvParallelProcess $(PROJECT_SOURCE_DIR)/src/main.cpp)
target_link_libraries(YuvParallelProcess libyuv.a)
Run Code Online (Sandbox Code Playgroud)
我的项目文件的组织方式如下:
YuvParallelProcess
build
data
inc
lib
src
CMakeLists.txt
Run Code Online (Sandbox Code Playgroud)
当我cmake ..在build目录中运行时,外壳打印:
$(PROJECT_SOURCE_DIR)
-- Configuring done
CMake Error at CMakeLists.txt:10 (add_executable):
Cannot find source file:
$(PROJECT_SOURCE_DIR)/src/main.cpp
CMake Error at CMakeLists.txt:10 (add_executable):
No SOURCES given to target: YuvParallelProcess
Run Code Online (Sandbox Code Playgroud)
我不知道为什么 shell 只打印$(PROJECT_SOURCE_DIR)除了值之外的值PROJECT_SOURCE_DIR
如何打印值PROJECT_SOURCE_DIR
顺便说一句,我不明白为什么 cmake 无法编译我的项目
我读了很多关于为这两个系统创建跨平台库的问题.每个答案都指向静态库作为解决方案.
我不想最终得到一个静态库,我想用iOS的方法和OS X的对应方创建一个类.
-(void)createColor:(NSColor*);
-(void)createColor:(UIColor*);
Run Code Online (Sandbox Code Playgroud)
我遇到的第一个问题是我找不到使用仅在特定系统中可用的类的方法.那么,例如,我如何管理UIColor在iOS和NSColorOS X中使用的功能?
如果我为iOS创建一个项目,当我查看Foundation.h我NSColor.h在标题列表中找不到.
我想用TARGET_OS_MAC和TARGET_OS_IPHONE定义来区分两个系统......我是在正确的方式?
编辑添加更多信息:
目前我有2个目标:iOSTestApp和OSxTestApp.对于这些目标,我已根据系统包含了所需的框架.
仅当我选择OSXTestApp作为活动目标时才使用TARGET_OS_MAC和TARGET_OS_IPHONE工作.当我选择iOSAppTest时,Xcode会返回OS X数据类型的错误(即NSColor)
这里是产生这些错误的代码示例:
#if TARGET_OS_MAC
-(void)createColor:(NSColor*)color;
#elif TARGET_OS_IPHONE
-(void)createColor:(UIColor*)color;
#endif
Run Code Online (Sandbox Code Playgroud)
如果我反转定义它的工作原理......这里是一个产生这些错误的代码示例:
#if TARGET_OS_IPHONE
-(void)createColor:(UIColor*)color;
#elif TARGET_OS_MAC
-(void)createColor:(NSColor*)color;
#endif
Run Code Online (Sandbox Code Playgroud) ios ×2
objective-c ×2
avfoundation ×1
c++ ×1
cmake ×1
cocoa ×1
cocoa-touch ×1
freeglut ×1
glfw ×1
glut ×1
macos ×1
opengl ×1