(English/中文)
LCPkg (LC's Package Manager) is a command line tool for manage Windows C/C++ project dependencies, it is able to:
- Install dependencies from Vcpkg or GitHub.
- Save information about your project and its dependencies.
- Pack resource files, header files and library files into a package file to make your project easier to install.
Prerequisites:
To get started:
npm install -g lcpkg
Tell lcpkg where the root directory of vcpkg is:
lcpkg config vcpkg.root /path/to/vcpkg
Go to your project directory:
cd /path/to/your/project
Tell lcpkg about your project information:
lcpkg init
Install any packages with:
lcpkg install sdl2 curl
The files in these packages will be copied to the lcpkg/installed directory in the project directory. The directory structure is similar to the Vcpkg package:
x64-windows/
bin
libxxx.dll
debug
bin
libxxxd.dll
lib
libxxxd.lib
include
libxxx.h
lib
libxxx.lib
If your project is an application, and its working directory requires the dll files and resource files of the dependent package, you can export them to the working directory:
lcpkg export --filter runtime /path/to/your/app/workdir
You can also specify which CPU architecture and build mode resource files to export:
lcpkg export --filter rumtime --arch x64 --mode debug /path/to/your/app/workdir
If your project is a C/C++ library, and want to publish it to other developers, you can package it:
lcpkg pack
This command will output some files like this:
dist/yourlib_all.lcpkg.zip
dist/yourlib_x86-windows.lcpkg.zip
dist/yourlib_x64-windows.lcpkg.zip
dist/yourlib_x86-uwp.lcpkg.zip
dist/yourlib_x64-uwp.lcpkg.zip
The yourlib_all.lcpkg.zip
file includes packages for all platforms and architectures, you can install it like this:
lcpkg install /path/to/yourlib_all.lcpkg.zip
If your project is an open source project and hosted on GitHub.com, you can upload them to the release assets each time you post a release note, and tell your users install it like this:
lcpkg install github.com/yourusername/yourlib
The yourlib_all.lcpkg.zip
file is usually large, We recommend you upload files other than it, so that users don't have to wait too long for downloading.
The approach of lcpkg is similar to that of npm. It maps local development projects in the form of symbolic links to the global package directory for application projects, but is limited by the directory structure of C/C++ projects and the dependency search rules of the build tool. Some additional commands are needed to synchronize the dependent package files.
Symlink current package directory to global package directory:
lcpkg link
Then repackage to update the package files every time the library is built:
lcpkg pack
And update the dependent library files in the application project:
lcpkg install
-
Vcpkg is awesome, why should I use LCPkg instead of Vcpkg?
In the current version, LCPkg doesn't have any appealing features, For the author, its main use is help other developers to download and install the binary packages of LCUI and LC Design. But if you happen to meet the following conditions, you can try LCPkg.
- Have a C/C++ library project that you need to publish to other developers.
- The build tool used in the project is not CMake, and you don't want to learn CMake.
- Some tools written in JavaScript are used in your project, and the Node.js has already been installed.
There are many ways to contribute to LCPkg.
- Submit bugs and help us verify fixes as they are checked in.
- Vote and discuss participation in feature requests.
- Review the source code changes.
- Contribute bug fixes.
LCPkg has adopted the code of conduct defined by the Contributor Covenant. This document is used across many open source communities, and we think it articulates our values well. For more, see the Code of Conduct.
Code licensed under the MIT License.