【问题标题】:Ignore/only show errors/warnings from certain directory using CMake使用 CMake 忽略/仅显示来自特定目录的错误/警告
【发布时间】:2013-02-28 10:39:31
【问题描述】:

主要问题:是否有用于 cmake 的配置,仅显示或忽略来自某个目录的编译器警告/错误?

替代解决方案:如何在 QtCreator 中切换?

背景/动机: 我正在开发一个更大的 CMake 项目,并希望只关注来自我的子项目的警告和错误。我正在与 QtCreator 合作,在一堆外国错误/警告下寻找“我的”错误/警告让我很恼火。

【问题讨论】:

    标签: compiler-errors cmake qt-creator compiler-warnings


    【解决方案1】:

    您至少可以在 CMake 中为某些 target 或某些 files 设置编译器警告选项。

    # For target
    set_target_properties(your_project_name PROPERTIES COMPILE_FLAGS "...")
    
    # For files
    set_source_files_properties(
      ${list_of_your_files}
      PROPERTIES
      COMPILE_FLAGS "..."
    )
    

    还可以通过将项目分隔为子项目来设置每个文件夹的选项,使用add_subdirectory(your_project) 添加它,并在你的项目CMakeLists.txt 中使用add_definitions(...)

    来自 CMake 文档:

    add_definitions 为当前目录及以下目录中的源代码添加标志到编译器命令行。

    【讨论】:

    • 有趣。 set_source_files_properties() 是每个目录。所以所有命名的目标都会受到影响,无论它在哪个项目中......
    • 注意:此属性 [a.k.a. COMPILE_FLAGS] 已被 COMPILE_OPTIONS 属性取代。 如果您使用的是较新版本的 cmake。
    【解决方案2】:

    与@ronkot 的回答基本相同。但是对于某些目录不需要add_subdirectory,使用set_source_files_propertiesfile(GLOB_RECURSE ...) 也可以。

    file(GLOB_RECURSE SRC_DIR "SRC_DIR/*.c" "SRC_DIR/*.h")
    
    set_source_files_properties(
      ${SRC_DIR}
      PROPERTIES
      COMPILE_FLAGS "-w"
    )
    

    【讨论】:

      【解决方案3】:

      扩展@ronkot 答案,推荐的基于目标的方法是:

      target_compile_options(your_target SCOPE compiler-warning-options)
      

      其中SCOPEPUBLIC|INTERFACE|PRIVATEcompiler-warning-options 是实际的编译器警告选项,例如-Wall。请参阅cmake's docs 了解更多信息。

      一般来说,更喜欢使用现代 CMake (3.0+) 的基于目标的方法,而不是基于目录的方法。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-06-17
        • 1970-01-01
        • 2015-10-10
        • 1970-01-01
        • 1970-01-01
        • 2019-08-05
        相关资源
        最近更新 更多