cmake checker是一个搜索违反“现代”cmake规则的行为的工具。

cmake-checker的Python项目详细描述


cmake检查器

cmake checker是一个搜索违反“现代”cmake规则的行为的工具。

使用量

usage: __main__.py [-h] [--warn-only] [--reporter {console,junit}]
                        [-o OUTPUT_FILE] [--whitelist WHITELIST]
                        PATH [PATH ...]

positional arguments:
  PATH                  Path to the file or directory where the checks should
                        be done

optional arguments:
  -h, --help            show this help message and exit
  --warn-only           Program will return 0 even if violations are found
  --reporter {console,junit}
                        Specify type of reporter to output
  -o OUTPUT_FILE, --output-file OUTPUT_FILE
                        Output results to file with given name
  --whitelist WHITELIST
                        Whitelist file with rules to ignore certain files or
                        dirs (.gitignore style)

工具警告

的原因
  • file(GLOB ...)

    • cmake将无法正确跟踪磁盘上新文件的依赖项。如果没有cmakelists.txt文件在源 添加或删除,则生成的生成系统无法知道何时要求cmake重新生成。
    • 无法确保仅添加所需的文件。globbing可能会收集您不需要的零散文件。
  • 功能

    • add_compile_options
    • add_compile_definitions
    • link_libraries
    • add_definitions
    • include_directories

    函数在目录作用域而不是目标作用域上工作。列出的每个函数都有 应使用的目标作用域的等效项。

  • 属性COMPILE_<LANG>_FLAGS

    应该为目标设置这些属性-不能全局修改

  • 带子句的关闭命令

    • endif
    • endfunction
    • endmacro
    • endforeach

    示例:

    macro(foo ...)
    ...
    endmacro(foo)
    
  • 设置/取消设置包括

    • ENV
    • CACHE
  • ../..target_sources函数中

  • 在函数声明之外设置/取消设置PARENT_SCOPE

禁用检查的可能性

如果由于任何特定原因需要禁用检查,可以使用:

# cmake-check disable
...
# cmake-check enable

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
servlets Java EE+GlassFish:如果用户在其他地方登录,则强制用户注销   java在不更改源代码的情况下添加钩子   安卓 Java TextView Onclick()返回表达式错误   java Excel文件未使用Apache存储内部内存   java getRowCount()和getSelectedColumn()不起作用   无法在java中生成视图绑定。util。Android Gradle插件2.1的NoTouchElementException   Java中的类型转换运算符百分比计算为零   主java中的调用方法   java在Javasound中播放多个示例   java如何知道webDriver成功打开URL   java jmock,每次调用时返回新对象   eclipse使用Java在Selenium WebDriver中生成可执行文件   macos捆绑Java OS X应用程序默认为MacRoman编码   java我应该把我的休息网关变成一个图书馆吗?   java Eclipse插件:查找包含子字符串的行号无效   Java IOException:在Linux上发送UDP数据包时没有可用的缓冲区空间   java无法解析jaxbxjc2中的名称“xjc:globalJavaType”。2.52.罐子   java是否有HibernateAPI来检查是否创建了数据库?