修改生成文件以简化框架 #include 路径
Modify Makefile to simplify framework #include path
问题
有没有办法修改Makefile
中框架的INCLUDE
路径,以便能够像用于 Windows 一样将<SDL2/SDL.h>
简化为<SDL.h>
?
背景
我正在尝试编辑我的团队的 Makefile,以便为Mac的本机形式的库,框架以及现有的Windows库提供跨平台支持,以便我们可以保持代码尽可能简单。
我知道#ifdef __APPLE_CC__
被用来包装特定于 Mac 的代码,但单独包装<SDL2/SDL.h>
和<SDL.h>
的每个实例似乎过多。
包括 Windows 中的库所需的:
#include <SDL.h>
#include <SDL_image.h>
包括 Mac 中框架所需的内容:
#include <SDL2/SDL.h>
#include <SDL2_Image/SDL_image.h>
生成文件(不完整(
# Windows part
ifeq ($(OS), Windows_NT)
DETECTED_OS = $(OS)
CC = g++ -std=c++11
CFLAGS = -c -IC:/mingwdev/include/SDL2
INCLUDE = -IC:/mingwdev/include/SDL2
LFLAGS = -LC:/mingwdev/lib -lmingw32 -lSDL2main -lSDL2 -lSDL2_image -o $(OUT)
LFLAGScr = -LC:/mingwdev/lib -lmingw32 -lSDL2main -lSDL2 -lSDL2_image
# Mac part
else ifeq ($(shell uname -s), Darwin)
DETECTED_OS := $(shell uname -s)
CC = g++ -std=c++11
CFLAGS = -c -F/Library/Frameworks # THIS IS WHAT I WANT TO MODIFY #
INCLUDE = -F/Library/Frameworks # THIS IS WHAT I WANT TO MODIFY #
LFLAGS = -framework SDL2 -framework SDL2_image -framework SDL2_ttf -o $(OUT)
LFLAGScr = -framework SDL2 -framework SDL2_image -framework SDL2_ttf
# Final Part
all: $(OUT)
$(OUT): $(OBJ)
$(CC) $^ $(INCLUDE) $(LFLAGS)
obj/%.o: src/%.cpp $(DEP)
$(CC) $< $(CFLAGS) -o $@
要像 Windows 对应项那样使用#include <SDL.h>
,除了让编译器知道它正在使用具有-F
的框架之外,您还需要使用-I
命令提供框架内标头的路径。
生成文件中的两行将如下所示:
CFLAGS = -c -I/Library/Frameworks/SDL2.framework/Headers -F/Library/Frameworks/
INCLUDE = -I/Library/Frameworks/SDL2.framework/Headers -F/Library/Frameworks/
要包含第二个库,如SDL_image,您只需执行以下操作:
CFLAGS = -c -I/Library/Frameworks/SDL2.framework/Headers -I/Library/Frameworks/SDL2_image.framework/Headers -F/Library/Frameworks/
INCLUDE = -I/Library/Frameworks/SDL2.framework/Headers -I/Library/Frameworks/SDL2_image.framework/Headers -F/Library/Frameworks/
(不客气,我自己和社区。
相关文章:
- 既然存在危险,为什么项目要使用-I include开关
- 有充分的理由在h文件中使用include保护而不是cpp文件吗
- 如何将更多文件夹添加到c++include路径
- 什么是"#include <boost/functional/hash.hpp> "?
- 在没有Xcode的情况下在Mac捆绑包中嵌入框架
- catch框架有没有办法比较流或文件
- 对于MacOS上的G++,如何添加默认的include目录/usr/local/include和默认的库搜索路径/usr
- 如何将不同的可执行文件合并到一个窗口框架中进行编码?像浏览器一样
- 使用Qt框架在c ++类中创建API调用
- C++包含来自 #include "DevEngine/Core.h" 的错误
- 如何在ECS框架中更新组件数据和通知系统
- <filesystem> 在 clang 6 和 10 上 #include 错误
- 在 void 函数中使用 #include 变量C++
- VSCode IntelliSense无法识别SDL框架的SDL_image扩展库
- 用于C++的静态二进制检测或二进制重写工具和框架
- GoogleMock是否仍然打算与任何测试框架一起使用?
- 带有框架的 QGraphicsTextItem 的 QPropertyAnimation 会使文本抖动
- 在C++中使用 Catch 测试框架编译错误"error: expected ';' at end of declaration list"
- 修改生成文件以简化框架 #include 路径
- "usr/include/dbus-1.0"在恶意框架中进行交叉编译是不安全的