[✔️]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相关的接口了!

目录
相关文章
|
7月前
|
存储 算法 安全
c++模板进阶操作——非类型模板参数、模板的特化以及模板的分离编译
在 C++ 中,仿函数(Functor)是指重载了函数调用运算符()的对象。仿函数可以像普通函数一样被调用,但它们实际上是对象,可以携带状态并具有更多功能。与普通函数相比,仿函数具有更强的灵活性和可扩展性。仿函数通常通过定义一个包含operator()的类来实现。public:// 重载函数调用运算符Add add;// 创建 Add 类的对象// 使用仿函数return 0;
252 0
|
12月前
|
自然语言处理 编译器 C语言
为什么C/C++编译腰要先完成汇编
C/C++ 编译过程中先生成汇编语言是历史、技术和实践的共同选择。历史上,汇编语言作为成熟的中间表示方式,简化了工具链;技术上,分阶段编译更高效,汇编便于调试和移植;实践中,保留汇编阶段降低了复杂度,增强了可移植性和优化能力。即使在现代编译器中,汇编仍作为重要桥梁,帮助开发者更好地理解和优化代码。
为什么C/C++编译腰要先完成汇编
|
自然语言处理 编译器 Linux
告别头文件,编译效率提升 42%!C++ Modules 实战解析 | 干货推荐
本文中,阿里云智能集团开发工程师李泽政以 Alinux 为操作环境,讲解模块相比传统头文件有哪些优势,并通过若干个例子,学习如何组织一个 C++ 模块工程并使用模块封装第三方库或是改造现有的项目。
953 56
|
存储 程序员 编译器
简述 C、C++程序编译的内存分配情况
在C和C++程序编译过程中,内存被划分为几个区域进行分配:代码区存储常量和执行指令;全局/静态变量区存放全局变量及静态变量;栈区管理函数参数、局部变量等;堆区则用于动态分配内存,由程序员控制释放,共同支撑着程序运行时的数据存储与处理需求。
661 22
WK
|
机器学习/深度学习 人工智能 算法
那C++适合开发哪些项目
C++ 是一种功能强大、应用广泛的编程语言,适合开发多种类型的项目。它在游戏开发、操作系统、嵌入式系统、科学计算、金融、图形图像处理、数据库管理、网络通信、人工智能、虚拟现实、航空航天等领域都有广泛应用。C++ 以其高性能、内存管理和跨平台兼容性等优势,成为众多开发者的选择。
WK
790 1
|
Ubuntu Linux 编译器
Linux/Ubuntu下使用VS Code配置C/C++项目环境调用OpenCV
通过以上步骤,您已经成功在Ubuntu系统下的VS Code中配置了C/C++项目环境,并能够调用OpenCV库进行开发。请确保每一步都按照您的系统实际情况进行适当调整。
2607 3
|
Linux 编译器 C语言
Linux c/c++之多文档编译
这篇文章介绍了在Linux操作系统下使用gcc编译器进行C/C++多文件编译的方法和步骤。
195 0
Linux c/c++之多文档编译
|
算法 编译器 C++
【C++篇】领略模板编程的进阶之美:参数巧思与编译的智慧
【C++篇】领略模板编程的进阶之美:参数巧思与编译的智慧
282 2
|
C++
【C++案例】一个项目掌握C++基础-通讯录管理系统
这篇文章通过一个通讯录管理系统的C++项目案例,详细介绍了如何使用C++实现添加、显示、删除、查找、修改和清空联系人等功能。
334 3