ccgo 2.2.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- ccgo-2.2.1/LICENSE +25 -0
- ccgo-2.2.1/MANIFEST.in +17 -0
- ccgo-2.2.1/PKG-INFO +512 -0
- ccgo-2.2.1/README.md +482 -0
- ccgo-2.2.1/ccgo/__init__.py +0 -0
- ccgo-2.2.1/ccgo/build_scripts/CCGO.toml.example +89 -0
- ccgo-2.2.1/ccgo/build_scripts/__init__.py +26 -0
- ccgo-2.2.1/ccgo/build_scripts/build_android.py +570 -0
- ccgo-2.2.1/ccgo/build_scripts/build_benches.py +233 -0
- ccgo-2.2.1/ccgo/build_scripts/build_conan.py +390 -0
- ccgo-2.2.1/ccgo/build_scripts/build_docs.py +137 -0
- ccgo-2.2.1/ccgo/build_scripts/build_include.py +286 -0
- ccgo-2.2.1/ccgo/build_scripts/build_ios.py +576 -0
- ccgo-2.2.1/ccgo/build_scripts/build_kmp.py +433 -0
- ccgo-2.2.1/ccgo/build_scripts/build_linux.py +528 -0
- ccgo-2.2.1/ccgo/build_scripts/build_macos.py +543 -0
- ccgo-2.2.1/ccgo/build_scripts/build_ohos.py +653 -0
- ccgo-2.2.1/ccgo/build_scripts/build_tests.py +225 -0
- ccgo-2.2.1/ccgo/build_scripts/build_tvos.py +554 -0
- ccgo-2.2.1/ccgo/build_scripts/build_utils.py +2654 -0
- ccgo-2.2.1/ccgo/build_scripts/build_watchos.py +557 -0
- ccgo-2.2.1/ccgo/build_scripts/build_windows.py +692 -0
- ccgo-2.2.1/ccgo/build_scripts/check_library.sh +141 -0
- ccgo-2.2.1/ccgo/build_scripts/cmake/CCGODependencies.cmake +162 -0
- ccgo-2.2.1/ccgo/build_scripts/cmake/CMakeConfig.cmake +46 -0
- ccgo-2.2.1/ccgo/build_scripts/cmake/CMakeExtraFlags.cmake +36 -0
- ccgo-2.2.1/ccgo/build_scripts/cmake/CMakeFunctions.cmake +1172 -0
- ccgo-2.2.1/ccgo/build_scripts/cmake/CMakeLists.txt.dependencies.example +99 -0
- ccgo-2.2.1/ccgo/build_scripts/cmake/CMakeUtils.cmake +361 -0
- ccgo-2.2.1/ccgo/build_scripts/cmake/FindCCGODependencies.cmake +286 -0
- ccgo-2.2.1/ccgo/build_scripts/cmake/ios.toolchain.cmake +518 -0
- ccgo-2.2.1/ccgo/build_scripts/cmake/template/Benches.CMakeLists.txt.in +41 -0
- ccgo-2.2.1/ccgo/build_scripts/cmake/template/External.CMakeLists.txt.in +134 -0
- ccgo-2.2.1/ccgo/build_scripts/cmake/template/External.Download.txt.in +39 -0
- ccgo-2.2.1/ccgo/build_scripts/cmake/template/Root.CMakeLists.txt.in +655 -0
- ccgo-2.2.1/ccgo/build_scripts/cmake/template/Src.CMakeLists.txt.in +48 -0
- ccgo-2.2.1/ccgo/build_scripts/cmake/template/Src.SubDir.CMakeLists.txt.in +71 -0
- ccgo-2.2.1/ccgo/build_scripts/cmake/template/Tests.CMakeLists.txt.in +42 -0
- ccgo-2.2.1/ccgo/build_scripts/cmake/template/ThirdParty.CMakeLists.txt.in +74 -0
- ccgo-2.2.1/ccgo/build_scripts/cmake/tvos.toolchain.cmake +518 -0
- ccgo-2.2.1/ccgo/build_scripts/cmake/watchos.toolchain.cmake +518 -0
- ccgo-2.2.1/ccgo/build_scripts/dependency_manager.py +466 -0
- ccgo-2.2.1/ccgo/cli.py +154 -0
- ccgo-2.2.1/ccgo/dockers/DOCKER_BUILD_GUIDE.md +249 -0
- ccgo-2.2.1/ccgo/dockers/Dockerfile.android +98 -0
- ccgo-2.2.1/ccgo/dockers/Dockerfile.apple +91 -0
- ccgo-2.2.1/ccgo/dockers/Dockerfile.linux +46 -0
- ccgo-2.2.1/ccgo/dockers/Dockerfile.windows-mingw +51 -0
- ccgo-2.2.1/ccgo/dockers/Dockerfile.windows-msvc +80 -0
- ccgo-2.2.1/ccgo/dockers/PUBLISHING.md +270 -0
- ccgo-2.2.1/ccgo/dockers/README.md +386 -0
- ccgo-2.2.1/ccgo/dockers/WINDOWS_TOOLCHAIN_GUIDE.md +140 -0
- ccgo-2.2.1/ccgo/dockers/build_docker.py +568 -0
- ccgo-2.2.1/ccgo/main.py +34 -0
- ccgo-2.2.1/ccgo.egg-info/PKG-INFO +512 -0
- ccgo-2.2.1/ccgo.egg-info/SOURCES.txt +60 -0
- ccgo-2.2.1/ccgo.egg-info/dependency_links.txt +1 -0
- ccgo-2.2.1/ccgo.egg-info/entry_points.txt +2 -0
- ccgo-2.2.1/ccgo.egg-info/requires.txt +5 -0
- ccgo-2.2.1/ccgo.egg-info/top_level.txt +1 -0
- ccgo-2.2.1/pyproject.toml +52 -0
- ccgo-2.2.1/setup.cfg +4 -0
ccgo-2.2.1/LICENSE
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
ccgo project is licensed for use as follows:
|
|
2
|
+
|
|
3
|
+
"""
|
|
4
|
+
MIT License
|
|
5
|
+
|
|
6
|
+
Copyright 2024 zhlinh and ccgo Project Authors. All rights reserved.
|
|
7
|
+
|
|
8
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
9
|
+
of this software and associated documentation files (the "Software"), to
|
|
10
|
+
deal in the Software without restriction, including without limitation the
|
|
11
|
+
rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
|
12
|
+
sell copies of the Software, and to permit persons to whom the Software is
|
|
13
|
+
furnished to do so, subject to the following conditions:
|
|
14
|
+
|
|
15
|
+
The above copyright notice and this permission notice shall be included in
|
|
16
|
+
all copies or substantial portions of the Software.
|
|
17
|
+
|
|
18
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
19
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
20
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
21
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
22
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
|
23
|
+
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
|
24
|
+
IN THE SOFTWARE.
|
|
25
|
+
"""
|
ccgo-2.2.1/MANIFEST.in
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# Include all CMake configuration files
|
|
2
|
+
recursive-include ccgo/build_scripts/cmake *.cmake
|
|
3
|
+
recursive-include ccgo/build_scripts/cmake/template *.txt.in
|
|
4
|
+
include ccgo/build_scripts/cmake/CMakeLists.txt.dependencies.example
|
|
5
|
+
|
|
6
|
+
# Include Docker build files
|
|
7
|
+
include ccgo/dockers/Dockerfile.*
|
|
8
|
+
include ccgo/dockers/*.py
|
|
9
|
+
include ccgo/dockers/*.md
|
|
10
|
+
|
|
11
|
+
# Include README and LICENSE
|
|
12
|
+
include README.md
|
|
13
|
+
include LICENSE
|
|
14
|
+
|
|
15
|
+
# Exclude compiled Python files
|
|
16
|
+
global-exclude *.pyc
|
|
17
|
+
global-exclude __pycache__
|
ccgo-2.2.1/PKG-INFO
ADDED
|
@@ -0,0 +1,512 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: ccgo
|
|
3
|
+
Version: 2.2.1
|
|
4
|
+
Summary: A C++ cross-platform build system
|
|
5
|
+
Author-email: zhlinh <zhlinhng@gmail.com>
|
|
6
|
+
License: MIT
|
|
7
|
+
Project-URL: Homepage, https://github.com/zhlinh/ccgo
|
|
8
|
+
Project-URL: Repository, https://github.com/zhlinh/ccgo
|
|
9
|
+
Project-URL: Issues, https://github.com/zhlinh/ccgo/issues
|
|
10
|
+
Classifier: Development Status :: 3 - Alpha
|
|
11
|
+
Classifier: Intended Audience :: Developers
|
|
12
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
13
|
+
Classifier: Programming Language :: Python :: 3
|
|
14
|
+
Classifier: Programming Language :: Python :: 3.8
|
|
15
|
+
Classifier: Programming Language :: Python :: 3.9
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
19
|
+
Classifier: Programming Language :: Python :: Implementation :: CPython
|
|
20
|
+
Classifier: Operating System :: POSIX :: Linux
|
|
21
|
+
Classifier: Operating System :: MacOS :: MacOS X
|
|
22
|
+
Classifier: Operating System :: Microsoft :: Windows
|
|
23
|
+
Requires-Python: >=3.8
|
|
24
|
+
Description-Content-Type: text/markdown
|
|
25
|
+
License-File: LICENSE
|
|
26
|
+
Requires-Dist: copier>=9.2.0
|
|
27
|
+
Requires-Dist: copier-templates-extensions>=0.3.0
|
|
28
|
+
Requires-Dist: tomli>=2.0.0; python_version < "3.11"
|
|
29
|
+
Dynamic: license-file
|
|
30
|
+
|
|
31
|
+
# ccgo
|
|
32
|
+
|
|
33
|
+
A cross-platform C++ build system designed to simplify and accelerate multi-platform development.
|
|
34
|
+
|
|
35
|
+
[](https://pypi.org/project/ccgo/)
|
|
36
|
+
[](https://opensource.org/license/MIT)
|
|
37
|
+
|
|
38
|
+
## Features
|
|
39
|
+
|
|
40
|
+
- 🚀 Fast cross-platform C++ builds for Android, iOS, macOS, Windows, Linux, and OpenHarmony (OHOS)
|
|
41
|
+
- 📦 Kotlin Multiplatform (KMP) support
|
|
42
|
+
- 📦 Conan C/C++ package manager integration
|
|
43
|
+
- 🧪 Integrated testing with GoogleTest
|
|
44
|
+
- 📊 Benchmarking support with Google Benchmark
|
|
45
|
+
- 📚 Documentation generation
|
|
46
|
+
- 🛠️ Project scaffolding from templates
|
|
47
|
+
- ✅ Environment dependency checking
|
|
48
|
+
- 🧹 Smart build artifact cleaning
|
|
49
|
+
|
|
50
|
+
## Installation
|
|
51
|
+
|
|
52
|
+
```bash
|
|
53
|
+
# Install from PyPI
|
|
54
|
+
pip3 install ccgo
|
|
55
|
+
|
|
56
|
+
# Or install from source in development mode
|
|
57
|
+
cd ccgo
|
|
58
|
+
pip3 install -e .
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
## Quick Start
|
|
62
|
+
|
|
63
|
+
```bash
|
|
64
|
+
# Create a new C++ library project
|
|
65
|
+
ccgo new my-awesome-lib
|
|
66
|
+
|
|
67
|
+
# Navigate to the project directory
|
|
68
|
+
cd my-awesome-lib/<project_relative_path>
|
|
69
|
+
|
|
70
|
+
# Build for Android
|
|
71
|
+
ccgo build android
|
|
72
|
+
|
|
73
|
+
# Run tests
|
|
74
|
+
ccgo test
|
|
75
|
+
|
|
76
|
+
# Build documentation
|
|
77
|
+
ccgo doc --open
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
## Commands Reference
|
|
81
|
+
|
|
82
|
+
### 1. Project Creation
|
|
83
|
+
|
|
84
|
+
#### `ccgo new` - Create New Project
|
|
85
|
+
|
|
86
|
+
Create a new library project in a new directory.
|
|
87
|
+
|
|
88
|
+
```bash
|
|
89
|
+
ccgo new <project-name> [options]
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
**Options:**
|
|
93
|
+
- `--template-url <url>` - Custom template repository URL
|
|
94
|
+
- `--data <key>=<value>` - Template variables (repeatable)
|
|
95
|
+
- `--defaults` - Use default values for all prompts
|
|
96
|
+
|
|
97
|
+
**Examples:**
|
|
98
|
+
```bash
|
|
99
|
+
# Create with interactive prompts
|
|
100
|
+
ccgo new my-project
|
|
101
|
+
|
|
102
|
+
# Create with all defaults
|
|
103
|
+
ccgo new my-project --defaults
|
|
104
|
+
|
|
105
|
+
# Use custom template
|
|
106
|
+
ccgo new my-project --template-url https://github.com/user/template.git
|
|
107
|
+
ccgo new my-project --template-url /path/to/user/template
|
|
108
|
+
|
|
109
|
+
# Set template variables
|
|
110
|
+
ccgo new my-project --data cpy_project_version=2.0.0
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
#### `ccgo init` - Initialize in Current Directory
|
|
114
|
+
|
|
115
|
+
Initialize a library project in the current directory.
|
|
116
|
+
|
|
117
|
+
```bash
|
|
118
|
+
ccgo init [options]
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
**Options:**
|
|
122
|
+
- `--template-url <url>` - Custom template repository URL
|
|
123
|
+
- `--data <key>=<value>` - Template variables (repeatable)
|
|
124
|
+
- `--defaults` - Use default values for all prompts
|
|
125
|
+
- `--force` - Skip confirmation prompt
|
|
126
|
+
|
|
127
|
+
**Examples:**
|
|
128
|
+
```bash
|
|
129
|
+
ccgo init
|
|
130
|
+
ccgo init --defaults --force
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
### 2. Build Commands
|
|
134
|
+
|
|
135
|
+
#### `ccgo build` - Build for Platforms
|
|
136
|
+
|
|
137
|
+
Build your library for specific platforms.
|
|
138
|
+
|
|
139
|
+
```bash
|
|
140
|
+
ccgo build <target> [options]
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
**Targets:**
|
|
144
|
+
- `android` - Build for Android (supports `--arch`)
|
|
145
|
+
- `ios` - Build for iOS
|
|
146
|
+
- `macos` - Build for macOS
|
|
147
|
+
- `windows` - Build for Windows
|
|
148
|
+
- `linux` - Build for Linux
|
|
149
|
+
- `ohos` - Build for OpenHarmony (supports `--arch`)
|
|
150
|
+
- `kmp` - Build Kotlin Multiplatform library
|
|
151
|
+
- `conan` - Build Conan C/C++ package
|
|
152
|
+
- `include` - Build include headers
|
|
153
|
+
|
|
154
|
+
**Options:**
|
|
155
|
+
- `--arch <architectures>` - Comma-separated architecture list (Android/OHOS only)
|
|
156
|
+
- Android: `armeabi-v7a`, `arm64-v8a`, `x86_64`
|
|
157
|
+
- OHOS: `armeabi-v7a`, `arm64-v8a`, `x86_64`
|
|
158
|
+
- `--ide-project` - Generate IDE project files
|
|
159
|
+
|
|
160
|
+
**Examples:**
|
|
161
|
+
```bash
|
|
162
|
+
# Build for Android with specific architectures
|
|
163
|
+
ccgo build android --arch armeabi-v7a,arm64-v8a
|
|
164
|
+
|
|
165
|
+
# Build for OHOS with all architectures
|
|
166
|
+
ccgo build ohos --arch armeabi-v7a,arm64-v8a,x86_64
|
|
167
|
+
|
|
168
|
+
# Build for iOS
|
|
169
|
+
ccgo build ios
|
|
170
|
+
|
|
171
|
+
# Build for macOS
|
|
172
|
+
ccgo build macos
|
|
173
|
+
|
|
174
|
+
# Build for Windows
|
|
175
|
+
ccgo build windows
|
|
176
|
+
|
|
177
|
+
# Build for Linux
|
|
178
|
+
ccgo build linux
|
|
179
|
+
|
|
180
|
+
# Build Kotlin Multiplatform library
|
|
181
|
+
ccgo build kmp
|
|
182
|
+
|
|
183
|
+
# Build Conan C/C++ package
|
|
184
|
+
ccgo build conan
|
|
185
|
+
|
|
186
|
+
# Generate IDE project for Android
|
|
187
|
+
ccgo build android --ide-project
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
### 3. Testing & Benchmarking
|
|
191
|
+
|
|
192
|
+
#### `ccgo test` - Run Tests
|
|
193
|
+
|
|
194
|
+
Build and run GoogleTest-based unit tests.
|
|
195
|
+
|
|
196
|
+
```bash
|
|
197
|
+
ccgo test [options]
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
**Options:**
|
|
201
|
+
- `--build-only` - Only build tests without running
|
|
202
|
+
- `--run-only` - Only run tests (assumes already built)
|
|
203
|
+
- `--filter <pattern>` - GoogleTest filter (e.g., 'MyTest*')
|
|
204
|
+
- `--ide-project` - Generate IDE project for tests
|
|
205
|
+
- `--gtest-args <args>` - Additional GoogleTest arguments
|
|
206
|
+
|
|
207
|
+
**Examples:**
|
|
208
|
+
```bash
|
|
209
|
+
# Build and run all tests
|
|
210
|
+
ccgo test
|
|
211
|
+
|
|
212
|
+
# Only build tests
|
|
213
|
+
ccgo test --build-only
|
|
214
|
+
|
|
215
|
+
# Run specific tests
|
|
216
|
+
ccgo test --filter "MyTest*"
|
|
217
|
+
|
|
218
|
+
# Run tests multiple times
|
|
219
|
+
ccgo test --gtest-args "--gtest_repeat=3"
|
|
220
|
+
|
|
221
|
+
# Generate IDE project for debugging tests
|
|
222
|
+
ccgo test --ide-project
|
|
223
|
+
```
|
|
224
|
+
|
|
225
|
+
#### `ccgo bench` - Run Benchmarks
|
|
226
|
+
|
|
227
|
+
Build and run Google Benchmark-based performance benchmarks.
|
|
228
|
+
|
|
229
|
+
```bash
|
|
230
|
+
ccgo bench [options]
|
|
231
|
+
```
|
|
232
|
+
|
|
233
|
+
**Options:**
|
|
234
|
+
- `--build-only` - Only build benchmarks without running
|
|
235
|
+
- `--run-only` - Only run benchmarks (assumes already built)
|
|
236
|
+
- `--filter <pattern>` - Google Benchmark filter (e.g., 'BM_Sort*')
|
|
237
|
+
- `--ide-project` - Generate IDE project for benchmarks
|
|
238
|
+
- `--benchmark-args <args>` - Additional Google Benchmark arguments
|
|
239
|
+
- `--format <format>` - Output format: `console`, `json`, `csv` (default: console)
|
|
240
|
+
|
|
241
|
+
**Examples:**
|
|
242
|
+
```bash
|
|
243
|
+
# Build and run all benchmarks
|
|
244
|
+
ccgo bench
|
|
245
|
+
|
|
246
|
+
# Only build benchmarks
|
|
247
|
+
ccgo bench --build-only
|
|
248
|
+
|
|
249
|
+
# Run specific benchmarks
|
|
250
|
+
ccgo bench --filter "BM_Sort*"
|
|
251
|
+
|
|
252
|
+
# Output results as JSON
|
|
253
|
+
ccgo bench --format json
|
|
254
|
+
|
|
255
|
+
# Output results as CSV
|
|
256
|
+
ccgo bench --format csv
|
|
257
|
+
```
|
|
258
|
+
|
|
259
|
+
### 4. Documentation
|
|
260
|
+
|
|
261
|
+
#### `ccgo doc` - Build Documentation
|
|
262
|
+
|
|
263
|
+
Generate project documentation (typically using Doxygen).
|
|
264
|
+
|
|
265
|
+
```bash
|
|
266
|
+
ccgo doc [options]
|
|
267
|
+
```
|
|
268
|
+
|
|
269
|
+
**Options:**
|
|
270
|
+
- `--open` - Open documentation in browser after building
|
|
271
|
+
- `--serve` - Start local web server to view documentation
|
|
272
|
+
- `--port <port>` - Port for web server (default: 8000)
|
|
273
|
+
- `--clean` - Clean build before generating
|
|
274
|
+
|
|
275
|
+
**Examples:**
|
|
276
|
+
```bash
|
|
277
|
+
# Build documentation
|
|
278
|
+
ccgo doc
|
|
279
|
+
|
|
280
|
+
# Build and open in browser
|
|
281
|
+
ccgo doc --open
|
|
282
|
+
|
|
283
|
+
# Build and serve on localhost:8000
|
|
284
|
+
ccgo doc --serve
|
|
285
|
+
|
|
286
|
+
# Serve on custom port
|
|
287
|
+
ccgo doc --serve --port 3000
|
|
288
|
+
|
|
289
|
+
# Clean build
|
|
290
|
+
ccgo doc --clean
|
|
291
|
+
```
|
|
292
|
+
|
|
293
|
+
### 5. Publishing
|
|
294
|
+
|
|
295
|
+
#### `ccgo publish` - Publish Libraries
|
|
296
|
+
|
|
297
|
+
Publish your library to package repositories.
|
|
298
|
+
|
|
299
|
+
```bash
|
|
300
|
+
ccgo publish <target>
|
|
301
|
+
```
|
|
302
|
+
|
|
303
|
+
**Targets:**
|
|
304
|
+
- `android` - Publish to Maven repository
|
|
305
|
+
- `ohos` - Publish to OHPM repository
|
|
306
|
+
- `kmp` - Publish KMP library to Maven (local or remote)
|
|
307
|
+
|
|
308
|
+
**Examples:**
|
|
309
|
+
```bash
|
|
310
|
+
# Publish Android library to Maven
|
|
311
|
+
ccgo publish android
|
|
312
|
+
|
|
313
|
+
# Publish OHOS library to OHPM
|
|
314
|
+
ccgo publish ohos
|
|
315
|
+
|
|
316
|
+
# Publish Kotlin Multiplatform library
|
|
317
|
+
ccgo publish kmp
|
|
318
|
+
```
|
|
319
|
+
|
|
320
|
+
### 6. Maintenance Commands
|
|
321
|
+
|
|
322
|
+
#### `ccgo check` - Check Dependencies
|
|
323
|
+
|
|
324
|
+
Verify that platform-specific development dependencies are installed.
|
|
325
|
+
|
|
326
|
+
```bash
|
|
327
|
+
ccgo check [target] [options]
|
|
328
|
+
```
|
|
329
|
+
|
|
330
|
+
**Targets:**
|
|
331
|
+
- `all` - Check all platforms (default)
|
|
332
|
+
- `android` - Check Android development environment
|
|
333
|
+
- `ios` - Check iOS development environment
|
|
334
|
+
- `macos` - Check macOS development environment
|
|
335
|
+
- `windows` - Check Windows development environment
|
|
336
|
+
- `linux` - Check Linux development environment
|
|
337
|
+
- `ohos` - Check OpenHarmony development environment
|
|
338
|
+
|
|
339
|
+
**Options:**
|
|
340
|
+
- `--verbose` - Show detailed information
|
|
341
|
+
|
|
342
|
+
**Examples:**
|
|
343
|
+
```bash
|
|
344
|
+
# Check all platforms
|
|
345
|
+
ccgo check
|
|
346
|
+
|
|
347
|
+
# Check Android environment
|
|
348
|
+
ccgo check android
|
|
349
|
+
|
|
350
|
+
# Check with verbose output
|
|
351
|
+
ccgo check ios --verbose
|
|
352
|
+
```
|
|
353
|
+
|
|
354
|
+
#### `ccgo clean` - Clean Build Artifacts
|
|
355
|
+
|
|
356
|
+
Remove build artifacts and caches.
|
|
357
|
+
|
|
358
|
+
```bash
|
|
359
|
+
ccgo clean [target] [options]
|
|
360
|
+
```
|
|
361
|
+
|
|
362
|
+
**Targets:**
|
|
363
|
+
- `all` - Clean all platforms (default)
|
|
364
|
+
- `android` - Clean Android build caches
|
|
365
|
+
- `ios` - Clean iOS build caches
|
|
366
|
+
- `macos` - Clean macOS build caches
|
|
367
|
+
- `ohos` - Clean OpenHarmony build caches
|
|
368
|
+
- `kmp` - Clean Kotlin Multiplatform build caches
|
|
369
|
+
- `examples` - Clean examples build caches
|
|
370
|
+
|
|
371
|
+
**Options:**
|
|
372
|
+
- `--native-only` - Clean only `cmake_build/` (native CMake builds)
|
|
373
|
+
- `--dry-run` - Show what would be cleaned without deleting
|
|
374
|
+
- `-y, --yes` - Skip confirmation prompts
|
|
375
|
+
|
|
376
|
+
**Examples:**
|
|
377
|
+
```bash
|
|
378
|
+
# Clean all (with confirmation)
|
|
379
|
+
ccgo clean
|
|
380
|
+
|
|
381
|
+
# Clean only Android
|
|
382
|
+
ccgo clean android
|
|
383
|
+
|
|
384
|
+
# Preview what will be deleted
|
|
385
|
+
ccgo clean --dry-run
|
|
386
|
+
|
|
387
|
+
# Clean all without confirmation
|
|
388
|
+
ccgo clean -y
|
|
389
|
+
|
|
390
|
+
# Clean only native CMake builds
|
|
391
|
+
ccgo clean --native-only
|
|
392
|
+
```
|
|
393
|
+
|
|
394
|
+
### 7. Help
|
|
395
|
+
|
|
396
|
+
#### `ccgo help` - Show Help
|
|
397
|
+
|
|
398
|
+
Display comprehensive help information.
|
|
399
|
+
|
|
400
|
+
```bash
|
|
401
|
+
ccgo help
|
|
402
|
+
|
|
403
|
+
# Or get help for specific command
|
|
404
|
+
ccgo <command> --help
|
|
405
|
+
```
|
|
406
|
+
|
|
407
|
+
## Environment Variables
|
|
408
|
+
|
|
409
|
+
### Android
|
|
410
|
+
- `ANDROID_HOME` - Android SDK location
|
|
411
|
+
- `ANDROID_NDK_HOME` - Android NDK location
|
|
412
|
+
- `JAVA_HOME` - Java Development Kit location
|
|
413
|
+
|
|
414
|
+
### OpenHarmony (OHOS)
|
|
415
|
+
- `OHOS_SDK_HOME` or `HOS_SDK_HOME` - OHOS Native SDK location
|
|
416
|
+
|
|
417
|
+
### iOS/macOS
|
|
418
|
+
- Requires Xcode and command-line tools
|
|
419
|
+
|
|
420
|
+
## Project Structure
|
|
421
|
+
|
|
422
|
+
Projects created with ccgo follow this structure:
|
|
423
|
+
|
|
424
|
+
```
|
|
425
|
+
my-project/
|
|
426
|
+
├── CCGO.toml # CCGO project config
|
|
427
|
+
├── CMakeLists.txt # Root CMake configuration
|
|
428
|
+
├── src/ # Source code
|
|
429
|
+
├── include/ # Public headers
|
|
430
|
+
├── docs/ # docs files
|
|
431
|
+
├── tests/ # GoogleTest unit tests
|
|
432
|
+
├── benches/ # Benchmark tests
|
|
433
|
+
├── android/ # Android-specific files (Gradle)
|
|
434
|
+
├── ohos/ # OHOS-specific files (hvigor)
|
|
435
|
+
├── kmp/ # Kotlin Multiplatform files (Gradle)
|
|
436
|
+
```
|
|
437
|
+
|
|
438
|
+
## Advanced Usage
|
|
439
|
+
|
|
440
|
+
### Using Custom Templates
|
|
441
|
+
|
|
442
|
+
You can create projects from custom templates:
|
|
443
|
+
|
|
444
|
+
```bash
|
|
445
|
+
# From GitHub repository
|
|
446
|
+
ccgo new my-project --template-url=https://github.com/user/my-template.git
|
|
447
|
+
|
|
448
|
+
# From local directory
|
|
449
|
+
ccgo new my-project --template-url=/path/to/local/template
|
|
450
|
+
```
|
|
451
|
+
|
|
452
|
+
### CI/CD Integration
|
|
453
|
+
|
|
454
|
+
The generated `build.py` script supports CI/CD workflows with environment variables:
|
|
455
|
+
|
|
456
|
+
- `CI_IS_RELEASE` - Build as release vs beta
|
|
457
|
+
- `CI_BUILD_<PLATFORM>` - Enable/disable platform builds
|
|
458
|
+
|
|
459
|
+
Example:
|
|
460
|
+
```bash
|
|
461
|
+
export CI_IS_RELEASE=1
|
|
462
|
+
export CI_BUILD_ANDROID=1
|
|
463
|
+
export CI_BUILD_IOS=1
|
|
464
|
+
python3 build.py
|
|
465
|
+
```
|
|
466
|
+
|
|
467
|
+
### Multi-Architecture Builds
|
|
468
|
+
|
|
469
|
+
Build for multiple architectures simultaneously:
|
|
470
|
+
|
|
471
|
+
```bash
|
|
472
|
+
# Android: build for 32-bit ARM, 64-bit ARM, and x86_64
|
|
473
|
+
ccgo build android --arch armeabi-v7a,arm64-v8a,x86_64
|
|
474
|
+
|
|
475
|
+
# OHOS: build for all supported architectures
|
|
476
|
+
ccgo build ohos --arch armeabi-v7a,arm64-v8a,x86_64
|
|
477
|
+
```
|
|
478
|
+
|
|
479
|
+
## Troubleshooting
|
|
480
|
+
|
|
481
|
+
### Common Issues
|
|
482
|
+
|
|
483
|
+
1. **"Command not found" after installation**
|
|
484
|
+
- Ensure `pip3` install directory is in your PATH
|
|
485
|
+
- Try `python3 -m ccgo` instead of `ccgo`
|
|
486
|
+
|
|
487
|
+
2. **Android build fails**
|
|
488
|
+
- Verify `ANDROID_HOME`, `ANDROID_NDK_HOME`, and `JAVA_HOME` are set
|
|
489
|
+
- Run `ccgo check android --verbose` to diagnose
|
|
490
|
+
|
|
491
|
+
3. **OHOS build fails**
|
|
492
|
+
- Verify `OHOS_SDK_HOME` or `HOS_SDK_HOME` is set
|
|
493
|
+
- Run `ccgo check ohos --verbose` to diagnose
|
|
494
|
+
|
|
495
|
+
4. **iOS/macOS build fails**
|
|
496
|
+
- Ensure Xcode and command-line tools are installed
|
|
497
|
+
- Run `xcode-select --install` if needed
|
|
498
|
+
|
|
499
|
+
## Contributing
|
|
500
|
+
|
|
501
|
+
Contributions are welcome! Please feel free to submit a Pull Request.
|
|
502
|
+
|
|
503
|
+
## License
|
|
504
|
+
|
|
505
|
+
ccgo is available under the [MIT license](https://opensource.org/license/MIT).
|
|
506
|
+
See the LICENSE file for the full license text.
|
|
507
|
+
|
|
508
|
+
## Links
|
|
509
|
+
|
|
510
|
+
- [GitHub Repository](https://github.com/zhlinh/ccgo)
|
|
511
|
+
- [PyPI Package](https://pypi.org/project/ccgo/)
|
|
512
|
+
- [Issue Tracker](https://github.com/zhlinh/ccgo/issues)
|