miao-make


Namemiao-make JSON
Version 20230627 PyPI version JSON
download
home_page
SummaryCargo-like project management tool for working with CMake
upload_time2023-06-27 08:06:15
maintainer
docs_urlNone
author
requires_python
license
keywords cmake cmakelists
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # Miao

![Lines of code](https://img.shields.io/tokei/lines/github/anzhi0708/miao)  ![PyPI](https://img.shields.io/pypi/v/miao-make)  ![PyPI - License](https://img.shields.io/pypi/l/miao-make)  ![PyPI - Format](https://img.shields.io/pypi/format/miao-make)

<br>

<div align="center">

  <img src="miao.png" alt="Miao Logo" width="13%"/>

  <p>A Python script for generating CMake files, with a user-friendly, Cargo-like command line interface. (UNDER CONSTRUCTION)</p>

</div>

<br>

---

TODO:

<br>

- ☑ 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

<br>

## Installation

```bash

# The PyPI version may be outdated.
# Please consider using `git clone` to 
# obtain the latest version.

pip3 install miao-make
```

## Usage

- `miao help`

```bash
$ 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

```bash

# 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`

```bash

$ 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

```bash
$ 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

```

            

Raw data

            {
    "_id": null,
    "home_page": "",
    "name": "miao-make",
    "maintainer": "",
    "docs_url": null,
    "requires_python": "",
    "maintainer_email": "",
    "keywords": "cmake,cmakelists",
    "author": "",
    "author_email": "Anji Wong <anzhi0708@gmail.com>",
    "download_url": "https://files.pythonhosted.org/packages/7a/4e/eda03c46b7b246cddf25f57562cb3a2f5d13bbfe3fc329782d32637af41c/miao-make-20230627.tar.gz",
    "platform": null,
    "description": "# Miao\n\n![Lines of code](https://img.shields.io/tokei/lines/github/anzhi0708/miao)  ![PyPI](https://img.shields.io/pypi/v/miao-make)  ![PyPI - License](https://img.shields.io/pypi/l/miao-make)  ![PyPI - Format](https://img.shields.io/pypi/format/miao-make)\n\n<br>\n\n<div align=\"center\">\n\n  <img src=\"miao.png\" alt=\"Miao Logo\" width=\"13%\"/>\n\n  <p>A Python script for generating CMake files, with a user-friendly, Cargo-like command line interface. (UNDER CONSTRUCTION)</p>\n\n</div>\n\n<br>\n\n---\n\nTODO:\n\n<br>\n\n- \u2611 miao new\n  - \u2611 --language\n  - \u2611 --standard \n  - \u2610 --lib\n- \u2611 miao add\n  - \u2611 --include_dirs\n  - \u2611 --lib_dirs\n- \u2611 miao build\n- \u2611 miao run\n- \u2611 miao clean\n- \u2611 miao help\n- \u2610 miao init\n  - \u2610 --lib\n- \u2610 miao remove\n- \u2610 miao config\n  - \u2610 --default_language\n  - \u2610 --default_language --standard\n  - \u2610 --default_include_dirs\n\n<br>\n\n## Installation\n\n```bash\n\n# The PyPI version may be outdated.\n# Please consider using `git clone` to \n# obtain the latest version.\n\npip3 install miao-make\n```\n\n## Usage\n\n- `miao help`\n\n```bash\n$ miao help\n\nMiao Version 20230626\n\n   add                       Add dependencies.\n                             Use `--include_dirs` to add header file directories.\n                             Use `--lib_dirs` to add library file directories.\n   build                     Compile the current project.\n   clean                     Remove the build directory.\n   config                    ...\n   find_project_root\n   help                      Print help.\n   init\n   new                       Create a new project.\n   remove                    ...\n   run                       Run the current project.\n   version                   Print version info and exit.\n\n```\n\n\n- `miao new` - Creating a new project\n\n```bash\n\n# Create a new project\n\n$ miao new my_project\n Created   my_project\n Added     CMakelists.txt\n (debug)   `\n           set(CMAKE_CXX_STANDARD 17)\n           file(GLOB_RECURSE SOURCES \"src/*.cpp\")\n           `\n Created   `src/` directory\n Added     main.cpp\n Created   `build/` directory\n\n\n# The `--language` and `--standard` flags\n\n$ miao new 'hello world' --language cpp --standard 20\n Created   hello_world\n Added     CMakelists.txt\n (debug)   ```set(CMAKE_CXX_STANDARD 20)\n           file(GLOB_RECURSE SOURCES \"src/*.cpp\")```\n Created   `src/` directory\n Added     main.cpp\n Created   `build/` directory\n```\n\n\n- `miao add` - Adding libraries\n\nConfigure header files with `miao add LIB --include_dirs=DIR1,DIR2`\n\n```bash\n\n$ cd my_project/\n\n\n$ miao add ncurses --include_dirs=$(brew --prefix ncurses)/include\nAdding header directories ['/usr/local/opt/ncurses/include']\nAdding ('ncurses',) for `my_project`\n\n```\n\nand library files with `--lib_dirs=`\n\n```\n$ miao new tui && cd tui/  # Created project called `tui`\n$ miao add ftxui-dom ftxui-screen ftxui-component --include_dirs=/usr/local/include,/usr/local/include/ftxui --lib_dirs=/usr/local/lib\n\nAdding ('ftxui-dom', 'ftxui-screen', 'ftxui-component') for `tui`\nCMakeLists.txt\nfind_library(ftxui-dom NAMES ftxui-dom PATHS /usr/local/lib)\nfind_library(ftxui-screen NAMES ftxui-screen PATHS /usr/local/lib)\nfind_library(ftxui-component NAMES ftxui-component PATHS /usr/local/lib)\ntarget_include_directories(tui.exe PRIVATE /usr/local/include /usr/local/include/ftxui)\ntarget_link_libraries(tui.exe ${ftxui-dom} ${ftxui-screen} ${ftxui-component})\n```\n\n\n- Run\n\n```bash\n$ miao run\n root:     /Users/4nji/dev/python/miao/src/my_project\n pwd:      /Users/4nji/dev/python/miao/src/my_project\n Entering  /Users/4nji/dev/python/miao/src/my_project/build\n-- The C compiler identification is AppleClang 13.0.0.13000029\n-- The CXX compiler identification is AppleClang 13.0.0.13000029\n-- Detecting C compiler ABI info\n-- Detecting C compiler ABI info - done\n-- Check for working C compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc - skipped\n-- Detecting C compile features\n-- Detecting C compile features - done\n-- Detecting CXX compiler ABI info\n-- Detecting CXX compiler ABI info - done\n-- Check for working CXX compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++ - skipped\n-- Detecting CXX compile features\n-- Detecting CXX compile features - done\n-- Configuring done (1.5s)\n-- Generating done (0.0s)\n-- Build files have been written to: /Users/4nji/dev/python/miao/src/my_project/build\n Success   Successfully executed the command: ['cmake', '/Users/4nji/dev/python/miao/src/my_project']\n[ 50%] Building CXX object CMakeFiles/my_project.exe.dir/src/main.cpp.o\n[100%] Linking CXX executable my_project.exe\n[100%] Built target my_project.exe\n Success   Successfully executed the command: ['make']\n\n===========================2023-06-24 19:56:20.228994==========================\n\nRunning /Users/4nji/dev/python/miao/src/my_project/build/my_project.exe\n\n===============================================================================\nHello, world!\n\nProcess finished with exit code 0\n\n```\n\n\n- Cleaning up\n\n```\n$ miao clean\nRemoving /Users/Me/dev/python/miao/src/hello_world/build\n\n```\n",
    "bugtrack_url": null,
    "license": "",
    "summary": "Cargo-like project management tool for working with CMake",
    "version": "20230627",
    "project_urls": {
        "Homepage": "https://github.com/anzhi0708/miao"
    },
    "split_keywords": [
        "cmake",
        "cmakelists"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "a2ec494599876963661d2bc3db9089049e08c75795487c0faf916b1d6a0b64a7",
                "md5": "e38294e9e167b21eb08bfa288ba7910a",
                "sha256": "27bd412485f2f96cb8d4b340c1523e24fabcbf2106e784986ca17c6c0986cdf4"
            },
            "downloads": -1,
            "filename": "miao_make-20230627-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "e38294e9e167b21eb08bfa288ba7910a",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": null,
            "size": 7696,
            "upload_time": "2023-06-27T08:06:12",
            "upload_time_iso_8601": "2023-06-27T08:06:12.546108Z",
            "url": "https://files.pythonhosted.org/packages/a2/ec/494599876963661d2bc3db9089049e08c75795487c0faf916b1d6a0b64a7/miao_make-20230627-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "7a4eeda03c46b7b246cddf25f57562cb3a2f5d13bbfe3fc329782d32637af41c",
                "md5": "67074a48e16d27c30bf7158308ea02db",
                "sha256": "1ee24ebdb883f66468929ee0035de1c8f35c3cf70c1f1ba63acaee50d513e30f"
            },
            "downloads": -1,
            "filename": "miao-make-20230627.tar.gz",
            "has_sig": false,
            "md5_digest": "67074a48e16d27c30bf7158308ea02db",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": null,
            "size": 8746,
            "upload_time": "2023-06-27T08:06:15",
            "upload_time_iso_8601": "2023-06-27T08:06:15.152033Z",
            "url": "https://files.pythonhosted.org/packages/7a/4e/eda03c46b7b246cddf25f57562cb3a2f5d13bbfe3fc329782d32637af41c/miao-make-20230627.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2023-06-27 08:06:15",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "anzhi0708",
    "github_project": "miao",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": false,
    "requirements": [],
    "lcname": "miao-make"
}
        
Elapsed time: 1.04358s