C lang용 패키지 및 프로젝트 관리자를 만든 이유

4880 단어 rustc
몇 달 전에 나는 우리가 왜 Makefile을 쌓아두는지, 그리고 C 프로젝트에서 외부 라이브러리를 사용하는 것이 왜 그렇게 고통스러운지 궁금했습니다.

그래서 저는 이 아이디어를 얻었습니다. C 프로그래밍 언어를 위한 프로젝트 관리자 및 빌드 도구 만들기.

나는 C로 코드를 작성하기 시작했고 제대로 작동하지 않았지만(나는 이 세상에서 가장 나쁜 C 개발자 중 하나이기 때문입니다) 우리가 그것을 실행할 수 없을 때까지 계속했습니다.

동시에 나는 배우고 있었다 Rust ; 그래서 전체 프로젝트를 해당 언어로 다시 작성하기로 했습니다.

몇 주 동안 재작성한 후 올바른 제품을 갖게 되었습니다. 2020년 8월 10일 Wanager 1.0이 출시되었습니다. 프로젝트 생성 및 재초기화, 프로젝트 빌드 및 실행, 헤더 생성 등 몇 가지 기능만 있었습니다.

그 시점에서 Lockeer라는 누군가가 라이브러리를 관리할 수 있으면 멋질 것이라고 말했습니다.

그래서 메일링을 기반으로 한 제출 시스템과 함께 내 vps에 호스팅된 라이브러리를 설치하는 간단한 시스템을 작성했습니다. 작동했지만 vps 대역폭과 이메일 제출의 복잡성으로 인해 제한되었습니다.

그래서 SuperFola가 나타났습니다.



처음에는 그가 조언한 대로 repo의 tar 아카이브를 생성하는 github api를 사용하기로 결정했습니다.
내가 실행하고 있던 명령이 손상된 파일을 생성했기 때문에 몇 주 동안 그것에 매달렸습니다.

그 문제에 분노한 후에 나는 git 명령으로 직접 복제하여 이식성과 시간을 얻을 수 있다는 것을 깨달았습니다.

잘 작동했으므로 모든 것이 정상입니다!

그러나 Il_totore는 문제를 열었습니다.



그래서 최소 버전 3.5.x와 허용된 경로 지정으로 빌드 스크립트에 대한 Python 지원을 만들었습니다.

그 후, 그의 조언에 따라 멋진 빌드 스크립트를 갖도록 일종의 Python API를 만들었고 다음과 같이 생성했습니다.

from wngbuild import * # Import all from wngbuild module

build = BuildProfile(files="src/*.c",output="build/custom/prog.exe" ) # setup a build profile that will compile all files in src/ and place the binary in build/custom/prog.exe
build.cc = "C:\\MinGW\\bin\\gcc.exe" # Setup the compiler (optional, by default "gcc")
build.flags = "-W -Wall -Werror -Wextra" # Setup the flags that the command will be run with (optional)

build.run() # Run the compilation command
build.runOutput() # Run the binary produced by the compilation command (Will raise an error if the compilation command fails)




와플랙 / 윙


W 패키지 관리자 공식 저장소 | WNG는 Rust로 작성된 C 패키지 및 프로젝트 관리자입니다.






                     WW      WW NN   NN   GGGG
                     WW      WW NNN  NN  GG  GG
                     WW   W  WW NN N NN GG
                      WW WWW WW NN  NNN GG   GG
                       WW   WW  NN   NN  GGGGGG
                        The W package manager
                   Copyleft (ɔ) 2020-2021 Wafelack
ABOUT
=====
WNG is a C package and projects manager written in Rust. It permits 
projects build, run, creation and dependencies management.

It is highly customizable by a plugin system and it based on a 
highly modulable library.

It is available on Windows and Unix like systems.

It only requires a few prerequisties: a C compiler and git.

DISCLAIMER
==========

##############################################################
#                                                            # 
#   WNG is provided under the MPL-2.0 license on an "as is"  #
#    basis, without warranty of any kind, either expressed,  #
#     implied, orstatutory, including, without limitation,   #
#    warranties that WNG is free of defects, merchantable,   #
#       fit for aparticular purpose or non-infringing,       #
#


View on GitHub


여전히 WIP이며 여기에 추가할 수 있는 많은 기능이 있지만 귀하의 질문에 기꺼이 답변하거나 사용을 도와드리겠습니다.

읽어주셔서 감사하고 좋은 하루 되세요.

좋은 웹페이지 즐겨찾기