我正在开发一个Qt应用程序,使用cmake
和automoc
来处理生成Qt对象类。
我生成的文件file_automoc.cpp
会编译警告。警告本身来自cpp文件中包含的头文件,但此头文件是我无法修改的第三方库的一部分。
我想传递编译标志,以便仅针对此文件禁止这些特定警告。
问题是我无法在生成的文件上使用set_source_files_properties
,因为cmake
会抱怨该文件不存在。
如何在文件系统实际存在之前使用cmake
将编译标志传递给生成的文件?
答案 0 :(得分:1)
包含带SYSTEM
的lib会使编译器禁止对此lib发出警告。
来自https://cmake.org/cmake/help/v3.0/command/include_directories.html:
如果给出了SYSTEM选项,编译器将被告知某些平台上的目录是系统包含目录。发出此设置信号可能会产生一些影响,例如编译器跳过警告,或者这些固定安装系统文件未在依赖项计算中考虑 - 请参阅编译器文档。
此更改:
-INCLUDE_DIRECTORIES("/usr/include/thelib")
+INCLUDE_DIRECTORIES(SYSTEM "/usr/include/thelib")
禁止这些警告。