[✔️]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
|
2月前
|
存储 文件存储 数据库
【QT项目】QT项目综合练习之简易计数器(QT6+文件存储)
【QT项目】QT项目综合练习之简易计数器(QT6+文件存储)
|
2月前
|
XML 数据可视化 C语言
001 Qt_从零开始创建项目
本文是Qt专栏的第一篇,介绍了如何创建一个Qt项目。
116 4
|
2月前
|
自然语言处理 编译器 Linux
告别头文件,编译效率提升 42%!C++ Modules 实战解析 | 干货推荐
本文中,阿里云智能集团开发工程师李泽政以 Alinux 为操作环境,讲解模块相比传统头文件有哪些优势,并通过若干个例子,学习如何组织一个 C++ 模块工程并使用模块封装第三方库或是改造现有的项目。
|
3月前
|
存储 程序员 编译器
简述 C、C++程序编译的内存分配情况
在C和C++程序编译过程中,内存被划分为几个区域进行分配:代码区存储常量和执行指令;全局/静态变量区存放全局变量及静态变量;栈区管理函数参数、局部变量等;堆区则用于动态分配内存,由程序员控制释放,共同支撑着程序运行时的数据存储与处理需求。
214 22
|
3月前
|
Linux 编译器 C语言
Linux c/c++之多文档编译
这篇文章介绍了在Linux操作系统下使用gcc编译器进行C/C++多文件编译的方法和步骤。
55 0
Linux c/c++之多文档编译
|
3月前
|
算法 编译器 C++
【C++篇】领略模板编程的进阶之美:参数巧思与编译的智慧
【C++篇】领略模板编程的进阶之美:参数巧思与编译的智慧
105 2
|
5月前
CMake自动打包--Qt项目
CMake自动打包--Qt项目
74 0
|
5月前
|
编译器 C++
【C/C++学习笔记】C++声明与定义以及头文件与源文件的用途
【C/C++学习笔记】C++声明与定义以及头文件与源文件的用途
80 0
|
6月前
|
数据安全/隐私保护 C++ 计算机视觉
Qt(C++)开发一款图片防盗用水印制作小工具
文本水印是一种常用的防盗用手段,可以将文本信息嵌入到图片、视频等文件中,用于识别和证明文件的版权归属。在数字化和网络化的时代,大量的原创作品容易被不法分子盗用或侵犯版权,因此加入文本水印成为了保护原创作品和维护知识产权的必要手段。 通常情况下,文本水印可以包含版权声明、制作者姓名、日期、网址等信息,以帮助识别文件的来源和版权归属。同时,为了增强防盗用效果,文本水印通常会采用字体、颜色、角度等多种组合方式,使得水印难以被删除或篡改,有效地降低了盗用意愿和风险。 开发人员可以使用图像处理技术和编程语言实现文本水印的功能,例如使用Qt的QPainter类进行文本绘制操作,将文本信息嵌入到图片中,
220 1