Cargo-like project management tool for working with CMake
Project description
Miao
A Python script for generating CMake files, with a user-friendly, Cargo-like command line interface. (UNDER CONSTRUCTION)
TODO:
- ☑ miao new
- ☑ --language
- ☑ --standard
- ☐ --lib
- ☑ miao add
- ☑ --include_dirs
- ☑ --lib_dirs
- ☑ miao build
- ☑ miao run
- ☑ miao clean
- ☑ miao help
- ☐ miao init
- ☐ --lib
- ☐ miao remove
- ☐ miao config
- ☐ --default_language
- ☐ --default_language --standard
- ☐ --default_include_dirs
Installation
# The PyPI version may be outdated.
# Please consider using `git clone` to
# obtain the latest version.
pip3 install miao-make
Usage
miao help
$ miao help
Miao Version 20230626
add Add dependencies.
Use `--include_dirs` to add header file directories.
Use `--lib_dirs` to add library file directories.
build Compile the current project.
clean Remove the build directory.
config ...
find_project_root
help Print help.
init
new Create a new project.
remove ...
run Run the current project.
version Print version info and exit.
miao new- Creating a new project
# Create a new project
$ miao new my_project
Created my_project
Added CMakelists.txt
(debug) `
set(CMAKE_CXX_STANDARD 17)
file(GLOB_RECURSE SOURCES "src/*.cpp")
`
Created `src/` directory
Added main.cpp
Created `build/` directory
# The `--language` and `--standard` flags
$ miao new 'hello world' --language cpp --standard 20
Created hello_world
Added CMakelists.txt
(debug) ```set(CMAKE_CXX_STANDARD 20)
file(GLOB_RECURSE SOURCES "src/*.cpp")```
Created `src/` directory
Added main.cpp
Created `build/` directory
miao add- Adding libraries
Configure header files with miao add LIB --include_dirs=DIR1,DIR2
$ cd my_project/
$ miao add ncurses --include_dirs=$(brew --prefix ncurses)/include
Adding header directories ['/usr/local/opt/ncurses/include']
Adding ('ncurses',) for `my_project`
and library files with --lib_dirs=
$ miao new tui && cd tui/ # Created project called `tui`
$ miao add ftxui-dom ftxui-screen ftxui-component --include_dirs=/usr/local/include,/usr/local/include/ftxui --lib_dirs=/usr/local/lib
Adding ('ftxui-dom', 'ftxui-screen', 'ftxui-component') for `tui`
CMakeLists.txt
find_library(ftxui-dom NAMES ftxui-dom PATHS /usr/local/lib)
find_library(ftxui-screen NAMES ftxui-screen PATHS /usr/local/lib)
find_library(ftxui-component NAMES ftxui-component PATHS /usr/local/lib)
target_include_directories(tui.exe PRIVATE /usr/local/include /usr/local/include/ftxui)
target_link_libraries(tui.exe ${ftxui-dom} ${ftxui-screen} ${ftxui-component})
- Run
$ miao run
root: /Users/4nji/dev/python/miao/src/my_project
pwd: /Users/4nji/dev/python/miao/src/my_project
Entering /Users/4nji/dev/python/miao/src/my_project/build
-- The C compiler identification is AppleClang 13.0.0.13000029
-- The CXX compiler identification is AppleClang 13.0.0.13000029
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Configuring done (1.5s)
-- Generating done (0.0s)
-- Build files have been written to: /Users/4nji/dev/python/miao/src/my_project/build
Success Successfully executed the command: ['cmake', '/Users/4nji/dev/python/miao/src/my_project']
[ 50%] Building CXX object CMakeFiles/my_project.exe.dir/src/main.cpp.o
[100%] Linking CXX executable my_project.exe
[100%] Built target my_project.exe
Success Successfully executed the command: ['make']
===========================2023-06-24 19:56:20.228994==========================
Running /Users/4nji/dev/python/miao/src/my_project/build/my_project.exe
===============================================================================
Hello, world!
Process finished with exit code 0
- Cleaning up
$ miao clean
Removing /Users/Me/dev/python/miao/src/hello_world/build
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 miao-make-20230627.tar.gz.
File metadata
- Download URL: miao-make-20230627.tar.gz
- Upload date:
- Size: 8.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.11.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1ee24ebdb883f66468929ee0035de1c8f35c3cf70c1f1ba63acaee50d513e30f
|
|
| MD5 |
67074a48e16d27c30bf7158308ea02db
|
|
| BLAKE2b-256 |
7a4eeda03c46b7b246cddf25f57562cb3a2f5d13bbfe3fc329782d32637af41c
|
File details
Details for the file miao_make-20230627-py3-none-any.whl.
File metadata
- Download URL: miao_make-20230627-py3-none-any.whl
- Upload date:
- Size: 7.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.11.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
27bd412485f2f96cb8d4b340c1523e24fabcbf2106e784986ca17c6c0986cdf4
|
|
| MD5 |
e38294e9e167b21eb08bfa288ba7910a
|
|
| BLAKE2b-256 |
a2ec494599876963661d2bc3db9089049e08c75795487c0faf916b1d6a0b64a7
|