# NDK-Grammar **Repository Path**: Jonyker/NDK-Grammar ## Basic Information - **Project Name**: NDK-Grammar - **Description**: NDK语法,Linux C学习笔记 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2021-07-02 - **Last Updated**: 2025-04-02 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Cpp-Grammar 源码包括C,C++语法。 ## 一、文件区别: .h :头文件。头文件包含类,类型,函数和常数的声明。  .m :源代码文件。这是典型的源代码文件扩展名,可以包含Objective-C和C代码。  .mm :源代码文件。带有这种扩展名的源代码文件,除了可以包含Objective-C和C代码以外还可以包含C++代码。仅在你的Objective-C代码中确实需要使用C++类或者特性的时候才用这种扩展名。 .cpp:只能编译C++  当你需要在源代码中包含头文件的时候,你可以使用标准的#include编译选项,但是Objective-C提供了更好的方法。#import选项和#include选项完全相同,只是它可以确保相同的文件只会被包含一次。Objective-C的例子和文档都倾向于使用#import。 .m 和.mm 的区别是告诉gcc 在编译时要加的一些参数。当然.mm还可以命名成.m,但在编译时要手动加参数(麻烦) ## 二、常用场景: 如果你的OC代码里面有包含C++的引用或代码,将此类更改为.mm即可; > 注意#import或#include的位置要在.mm文件里,如果在.h头文件里是没用的 > eclipse 注意 terminatel有时会存在console不能自动输出到指定的console,在console中右键选择Preferences选项,进行重置 > 注意:clang++ cc gcc g++ 编写makefile脚本的时候,需要使用clang++ ## 三、makefile自动生成工具 frame.sh ### 使用方式 sh frame.sh autotools sh frame.sh clear ### 目录结构 include为存放头文件目录 src 为存放cpp文件的位置 ### 模块名字 修改frame.sh文件中变量名APP的名字,就能得到你想要的文件名字。 ## 四、常用makefile ### 一.编译单个cpp,或,c文件 ```makefile PROJECT_ROOT = $(dir $(abspath $(lastword $(MAKEFILE_LIST)))) OBJS = Cpp-Grammar.o BUILD_MODE = debug ifeq ($(BUILD_MODE),debug) CFLAGS += -g else ifeq ($(BUILD_MODE),run) CFLAGS += -O2 else $(error Build mode $(BUILD_MODE) not supported by this Makefile) endif all: Cpp-Grammar Cpp-Grammar: $(OBJS) $(CXX) -o $@ $^ %.o: $(PROJECT_ROOT)%.cpp $(CXX) -c $(CFLAGS) $(CXXFLAGS) $(CPPFLAGS) -o $@ $< %.o: $(PROJECT_ROOT)%.c $(CC) -c $(CFLAGS) $(CPPFLAGS) -o $@ $< clean: rm -fr Cpp-Grammar $(OBJS) ``` ### 二.编译多个cpp文件,或头文件 ```makefile OBJS = invoke.o Circle2.o Cpp-Grammar : $(OBJS) clang++ -o Cpp-Grammar $(OBJS) Circle2.o : Circle2.cpp Circle2.h clang++ -c Circle2.cpp invoke.o : invoke.cpp clang++ -c invoke.cpp clean : rm Cpp-Grammar $(OBJS) ``` ### 三.编译链接OpenCV库 ```makefile OBJS = Cpp-Grammar.o CLANG_LIBS = \ -lopencv_core.3.4.5 \ -lopencv_calib3d.3.4.5 \ -lopencv_dnn.3.4.5 \ -lopencv_features2d.3.4.5 \ -lopencv_flann.3.4.5 \ -lopencv_highgui.3.4.5 \ -lopencv_imgcodecs.3.4.5 \ -lopencv_imgproc.3.4.5 \ -lopencv_ml.3.4.5 \ -lopencv_objdetect.3.4.5 \ -lopencv_photo.3.4.5 \ -lopencv_shape.3.4.5 \ -lopencv_stitching.3.4.5 \ -lopencv_superres.3.4.5 \ -lopencv_video.3.4.5 \ -lopencv_videoio.3.4.5 \ -lopencv_videostab.3.4.5 \ Cpp-Grammar : $(OBJS) clang++ -o Cpp-Grammar $(OBJS) -I /usr/local/include/ -L /usr/local/lib/ $(CLANG_LIBS) -v Cpp-Grammar.o : Cpp-Grammar.cpp clang++ -c Cpp-Grammar.cpp clean : rm Cpp-Grammar $(OBJS) ``` 参考文章: [](https://stackoverflow.com/questions/33253926/how-to-compile-using-clang) [](https://blog.csdn.net/weixin_37569048/article/details/81666879)