A simple linter for CMake.
Project description
check-cmake
A simple linter for CMake.
Installation
check-cmake requires Python 3.8 or higher.
pip3 install check-cmake
Usage
check-cmake is a command-line application
usage: check-cmake [-h] [-v] [--version] [--recurse | --no-recurse] [--limit LIMIT] [root]
CMake checker for C and C++ projects.
positional arguments:
root path to the project root (default: .)
options:
-h, --help show this help message and exit
-v, --verbose enable verbose output
--version print the version and exit
--recurse, --no-recurse
recurse into subfolders (default: True)
--limit LIMIT maximum errors to emit (default: 0)
v0.3.0 - github.com/marzer/check-cmake
Exit codes
| Value | Meaning |
|---|---|
| 0 | No issues were found |
| 1 | Issues were found |
| -1 | A fatal error occurred |
Example output
error: /my_lib/CMakeLists.txt:29:9: language standard level should be set on a per-target basis using target_compile_features()
Context:
29 | set_target_properties(
30 | my_lib
31 | PROPERTIES
32 | CXX_STANDARD 14
33 | CXX_STANDARD_REQUIRED ON
34 | CXX_EXTENSIONS OFF
35 | )
Replace with:
target_compile_features(): https://cmake.org/cmake/help/latest/command/target_compile_features.html
More information:
CMAKE_CXX_KNOWN_FEATURES: https://cmake.org/cmake/help/latest/prop_gbl/CMAKE_CXX_KNOWN_FEATURES.html
CMAKE_C_KNOWN_FEATURES: https://cmake.org/cmake/help/latest/prop_gbl/CMAKE_C_KNOWN_FEATURES.html
found 1 error in 1 file.
Suppressing checks
Checks can be suppressed using comment-based 'pragmas' at the end of the source line:
set_target_properties(
my_lib
PROPERTIES
CXX_STANDARD 14 # nocheck
CXX_STANDARD_REQUIRED ON
CXX_EXTENSIONS OFF
)
For compatibility with other tools, any the following will also work:
# nolint
# check-cmake ignore
# lint-cmake ignore
# cmake-check ignore
# cmake-lint ignore
# check-cmake disable
# lint-cmake disable
# cmake-check disable
# cmake-lint disable
# check-cmake: ignore
# lint-cmake: ignore
# cmake-check: ignore
# cmake-lint: ignore
# check-cmake: disable
# lint-cmake: disable
# cmake-check: disable
# cmake-lint: disable
Changelog
v0.5.3
- Fixed
# nochecknot working in some rare circumstances
v0.5.2
- Fixed internal
Path.relative_to()error when used inside a virtual environment
v0.5.1
- Fixed false positive for incorrect use of
SYSTEMintarget_include_directories()in some cases
v0.5.0
- Added check for
add_library()with implicit type (STATIC,SHARED, et cetera)
v0.4.0
- Fixed line numbers sometimes being wrong in context snippets
- Added check for incorrectly-placed
SYSTEMintarget_include_directories() - Added check for extraneous space in
ExternalProject_Add()CMAKE_ARGS
v0.3.0
- Fixed
#nocheck
v0.2.0
- Added pragmas for ignoring checks on a line
- Added check for
cmake_minimum_required()whenproject()is present - Fixed minor formatting issues
v0.1.0
- First public release 🎉️
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file check_cmake-0.5.3.tar.gz.
File metadata
- Download URL: check_cmake-0.5.3.tar.gz
- Upload date:
- Size: 15.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5338f56c6e19c015e246479a00fcfda5aef6428ed2e9d64a5684f423c08441a0
|
|
| MD5 |
5f8fa1e5b244aa02e38e3eca81248331
|
|
| BLAKE2b-256 |
6bb51cee1d895706c087e3d9e40827ba77d65b62fea8192bffec206935a4c102
|
File details
Details for the file check_cmake-0.5.3-py3-none-any.whl.
File metadata
- Download URL: check_cmake-0.5.3-py3-none-any.whl
- Upload date:
- Size: 17.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f80267add811826ada2012d7d1a28f79717f744cfaea4b5181f3bd1a474f9e82
|
|
| MD5 |
409c0e1d62d8676cff2f55cc7fed7118
|
|
| BLAKE2b-256 |
1557251bd01fd708267a6fecedfcb2eff2a9d647029d11639b99f6679310822f
|