700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 3gpp文件头文件解析_居于LLVM 的命令行参数解析

3gpp文件头文件解析_居于LLVM 的命令行参数解析

时间:2022-03-15 14:11:49

相关推荐

3gpp文件头文件解析_居于LLVM 的命令行参数解析

在写命令行程序的时候经常需要解析各种命令行参数、打印help信息等,觉得非常的麻烦。今天介绍一种超级棒的命令参数解析的方法:居于LLVM 的命令行参数解析,有了它妈妈再也不用担心我不会解析命令行参数^ _ ^。

一、工程目录结构
二、示例代码
2.1 CMDemo.cpp

1.#include

2.#include

3.#include

4.#include

5.using namespace llvm;

6.

7.static cl::opt<bool> BOOLEAN_ARG("boolean-arg",cl::desc("test boolean arg"),cl::init(false));

8.static cl::opt<int> INT_ARG("int-arg",cl::desc("test integer arg"),cl::init(0));

9.static cl::opt<std::string> STRING_ARG("string-arg",cl::desc("string arg"),cl::value_desc("test string arg"),cl::init(""));

10.

11.int main(int argc, char **argv){

12.

13. cl::ParseCommandLineOptions(argc,argv,"llvm CommandLine demo\n");

14.

15. std::string string_arg = STRING_ARG;

16. bool boolean_arg = BOOLEAN_ARG;

17. int int_arg = INT_ARG;

18.

19. printf("string_arg:%s \n",string_arg.c_str());

20. printf("boolean_arg:%d \n",boolean_arg);

21. printf("int_arg:%d\n",int_arg);

22. return 0;

23.}

2.2 CMakeLists.txt

1.cmake_minimum_required(VERSION 3.11.2) #cmake版本要求

2.

3.project(CMDemo) #项目名称

4.

5.link_libraries(z)

6.link_libraries(curses)

7.link_libraries(pthread)

8.

9.set(CMAKE_CXX_STANDARD 11) #设置C++标准为C++11 LLVM 10 之后要用C++14

10.

11.set(LIBRARY_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/lib) #设置库文件输出到代码源路径下的lib文件夹中;

12.

13.find_package(LLVM REQUIRED CONFIG) #找到LLVM库,REQUIRED表示一定要找到这个库,找不到这个库,编译就直接结束,不再往下进行了

14.

15.llvm_map_components_to_libnames(LLVM_LIBRARIES all) #获取所有的LLVM库名称列表 保存在LLVM_LIBRARIES变量中

16.include_directories(${LLVM_INCLUDE_DIRS}) #设置LLVM库的头文件路径

17.

18.add_compile_options(-fno-rtti) #不用C++ RTTI 不然链接的时候会报错

19.

20.include_directories(${PROJECT_SOURCE_DIR}/include) #设置工程头文件路径

21.

22.

23.add_executable(CMDemo src/CMDemo.cpp)

24.

25.target_link_libraries(CMDemo ${LLVM_LIBRARIES}) #添加依赖库

三、运行效果
3.1 使用帮助
3.2 默认参数
3.3 传递参数
四、总结

主要是调用了LLVM Support库的cl::ParseCommandLineOptions函数对命令行参数进行解析,一行代码就完成了命令行参数解析功能。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。