[✔️]CMake生成的VisualStudio项目,Qt的头文件目录默认添加了编译选项,如何在添加到c++头文件目录

简介: [✔️]CMake生成的VisualStudio项目,Qt的头文件目录默认添加了编译选项,如何在添加到c++头文件目录

如题,这个问题其实困扰了我非常久,我也做了非常多的尝试,以下的这几个命令都试过了


target_include_directories()
include_directories()


使用以上命令,当你添加Qt模块后,Qt的头文件始终在命令行的编译选项里面,这就导致visual studio无法正常提示qt的相关代码,编写qt接口时非常难受。


image.png


直到后来,我尝试着添加了SYSTEM属性后,发现目录也出现在了编译选项里面


target_include_directories(myapp SYSTEM PRIVATE /path/to/include)


所以我就断定Qt内部的代码肯定有类似的逻辑,但是并没有在Qt的cmake文件中发现类似的逻辑。


顺着这个思路往下走,既然头文件目录已经添加到编译选项了,那如何修改目录的属性,让他添加到c++头文件目录呢?


chat-gpt告诉我,使用 target_compile_options 命令将 /path/to/include 目录添加到编译器的系统搜索路径中:


target_compile_options(myapp PRIVATE "-isystem /path/to/include")


除了 -isystem 选项之外,还有其他一些用于添加头文件搜索路径的编译器选项。这些选项通常具有不同的行为,并且可以根据您的需要进行选择。


下面是几个常见的用于添加头文件搜索路径的编译器选项:


  1. -I <path>: 将 <path> 目录添加到编译器的普通头文件搜索路径中。


  1. -isystem <path>: 将 <path> 目录添加到编译器的系统头文件搜索路径中。与 -I 不同,-isystem 选项会将头文件目录标记为系统目录,这意味着编译器不会产生警告信息。


  1. -idirafter <path>: 将 <path> 目录添加到编译器的后备头文件搜索路径中。当编译器在其他搜索路径中找不到所需的头文件时,它会尝试在后备搜索路径中查找头文件。


  1. -include <filename>: 在编译器预处理期间将 <filename> 文件包含在每个源代码文件中。这个选项可以用来强制编译器使用指定的头文件,例如在移植代码时可能需要使用。


除了上述选项之外,某些编译器可能还提供其他特定于平台或编译器的选项来处理头文件搜索路径。


最终问题也迎刃而解,使用


target_compile_options(myapp PRIVATE "-I/path/to/include")


image.png


这样子,visual studio就能丝滑的提示qt相关的接口了!

目录
相关文章
|
2月前
|
自然语言处理 编译器 Linux
WK
|
2月前
|
开发框架 开发工具 C++
C++跨平台框架Qt
Qt是一个功能强大的C++跨平台应用程序开发框架,支持Windows、macOS、Linux、Android和iOS等操作系统。它提供了250多个C++类,涵盖GUI设计、数据库操作、网络编程等功能。Qt的核心特点是跨平台性、丰富的类库、信号与槽机制,以及良好的文档和社区支持。Qt Creator是其官方IDE,提供了一整套开发工具,方便创建、编译、调试和运行应用程序。Qt适用于桌面、嵌入式和移动应用开发。
WK
76 5
|
2月前
|
存储 文件存储 数据库
【QT项目】QT项目综合练习之简易计数器(QT6+文件存储)
【QT项目】QT项目综合练习之简易计数器(QT6+文件存储)
|
2月前
|
XML 数据可视化 C语言
001 Qt_从零开始创建项目
本文是Qt专栏的第一篇,介绍了如何创建一个Qt项目。
103 4
|
2月前
|
自然语言处理 编译器 Linux
告别头文件,编译效率提升 42%!C++ Modules 实战解析 | 干货推荐
本文中,阿里云智能集团开发工程师李泽政以 Alinux 为操作环境,讲解模块相比传统头文件有哪些优势,并通过若干个例子,学习如何组织一个 C++ 模块工程并使用模块封装第三方库或是改造现有的项目。
|
3月前
|
存储 程序员 编译器
简述 C、C++程序编译的内存分配情况
在C和C++程序编译过程中,内存被划分为几个区域进行分配:代码区存储常量和执行指令;全局/静态变量区存放全局变量及静态变量;栈区管理函数参数、局部变量等;堆区则用于动态分配内存,由程序员控制释放,共同支撑着程序运行时的数据存储与处理需求。
178 21
|
3月前
|
Linux 编译器 C语言
Linux c/c++之多文档编译
这篇文章介绍了在Linux操作系统下使用gcc编译器进行C/C++多文件编译的方法和步骤。
52 0
Linux c/c++之多文档编译
|
3月前
|
算法 编译器 C++
【C++篇】领略模板编程的进阶之美:参数巧思与编译的智慧
【C++篇】领略模板编程的进阶之美:参数巧思与编译的智慧
98 2
|
4月前
|
C++ 内存技术
[转]Visual C++内嵌swf文件并播放
[转]Visual C++内嵌swf文件并播放
|
5月前
|
安全 C++
C++ QT 单例模式
C++ QT 单例模式
87 0