@esslassi/electron-printer 0.0.6 → 0.0.7
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.
- package/README.md +319 -251
- package/binding.gyp +57 -57
- package/lib/electronPrinter.d.ts +52 -24
- package/lib/electronPrinter.js +81 -30
- package/package.json +1 -1
- package/src/linux_printer.cpp +370 -170
- package/src/linux_printer.h +30 -20
- package/src/mac_printer.cpp +373 -166
- package/src/mac_printer.h +31 -22
- package/src/main.cpp +50 -21
- package/src/print.cpp +353 -272
- package/src/printer_factory.cpp +19 -19
- package/src/printer_factory.h +12 -12
- package/src/printer_interface.h +66 -28
- package/src/windows_printer.cpp +347 -210
- package/src/windows_printer.h +63 -34
- package/test.js +120 -0
package/README.md
CHANGED
|
@@ -1,251 +1,319 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
*
|
|
12
|
-
* Get
|
|
13
|
-
* Get
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
##
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
```bash
|
|
28
|
-
|
|
29
|
-
```
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
```
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
```
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
*
|
|
204
|
-
*
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
```
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
1
|
+
# 📦 @esslassi/electron-printer
|
|
2
|
+
|
|
3
|
+
Cross-platform native printer driver for **Windows, macOS, and Linux**, built with Node-API (N-API).
|
|
4
|
+
Works in **Node.js** and **Electron**.
|
|
5
|
+
|
|
6
|
+
Supports:
|
|
7
|
+
|
|
8
|
+
* 🖨 List printers
|
|
9
|
+
* 📄 Print raw/text/command data
|
|
10
|
+
* 📁 Print files
|
|
11
|
+
* 📋 Get printer driver options
|
|
12
|
+
* 📑 Get selected paper size
|
|
13
|
+
* 📦 Get job status
|
|
14
|
+
* ⛔ Cancel / pause / resume jobs
|
|
15
|
+
* 🔄 Promise (async/await) wrappers included
|
|
16
|
+
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
## 🚀 Installation
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
npm install @esslassi/electron-printer
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
If using Electron:
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
npx electron-rebuild
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
---
|
|
32
|
+
|
|
33
|
+
## 🧩 Supported Platforms
|
|
34
|
+
|
|
35
|
+
| OS | Backend |
|
|
36
|
+
| ------- | ------------ |
|
|
37
|
+
| Windows | WinSpool API |
|
|
38
|
+
| macOS | CUPS |
|
|
39
|
+
| Linux | CUPS |
|
|
40
|
+
|
|
41
|
+
---
|
|
42
|
+
|
|
43
|
+
# 📖 Usage
|
|
44
|
+
|
|
45
|
+
```ts
|
|
46
|
+
import * as printer from '@esslassi/electron-printer'
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
---
|
|
50
|
+
|
|
51
|
+
# 🖨 Printer Management
|
|
52
|
+
|
|
53
|
+
### Get all printers
|
|
54
|
+
|
|
55
|
+
```ts
|
|
56
|
+
const printers = printer.getPrinters()
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
### Async version
|
|
60
|
+
|
|
61
|
+
```ts
|
|
62
|
+
const printers = await printer.getPrintersAsync()
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
---
|
|
66
|
+
|
|
67
|
+
### Get single printer
|
|
68
|
+
|
|
69
|
+
```ts
|
|
70
|
+
const details = printer.getPrinter("My Printer")
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
---
|
|
74
|
+
|
|
75
|
+
### Get default printer
|
|
76
|
+
|
|
77
|
+
```ts
|
|
78
|
+
const defaultPrinter = printer.getDefaultPrinterName()
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
---
|
|
82
|
+
|
|
83
|
+
### Get printer driver options
|
|
84
|
+
|
|
85
|
+
```ts
|
|
86
|
+
const options = printer.getPrinterDriverOptions("My Printer")
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
---
|
|
90
|
+
|
|
91
|
+
### Get selected paper size
|
|
92
|
+
|
|
93
|
+
```ts
|
|
94
|
+
const paper = printer.getSelectedPaperSize("My Printer")
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
---
|
|
98
|
+
|
|
99
|
+
# 🖨 Printing
|
|
100
|
+
|
|
101
|
+
---
|
|
102
|
+
|
|
103
|
+
## 🟢 Print Raw/Text Data (Callback)
|
|
104
|
+
|
|
105
|
+
```ts
|
|
106
|
+
printer.printDirect({
|
|
107
|
+
data: "Hello Printer\n\n",
|
|
108
|
+
printer: "My Printer",
|
|
109
|
+
type: "RAW",
|
|
110
|
+
success: (jobId) => {
|
|
111
|
+
console.log("Printed. Job ID:", jobId)
|
|
112
|
+
},
|
|
113
|
+
error: (err) => {
|
|
114
|
+
console.error("Print error:", err)
|
|
115
|
+
}
|
|
116
|
+
})
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
---
|
|
120
|
+
|
|
121
|
+
## 🟢 Print Raw/Text Data (Async/Await)
|
|
122
|
+
|
|
123
|
+
```ts
|
|
124
|
+
const jobId = await printer.printDirectAsync({
|
|
125
|
+
data: Buffer.from("Hello Printer\n\n"),
|
|
126
|
+
printer: "My Printer",
|
|
127
|
+
type: "RAW"
|
|
128
|
+
})
|
|
129
|
+
|
|
130
|
+
console.log("Printed. Job ID:", jobId)
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
---
|
|
134
|
+
|
|
135
|
+
## 🟢 Print File (Callback)
|
|
136
|
+
|
|
137
|
+
```ts
|
|
138
|
+
printer.printFile({
|
|
139
|
+
filename: "./file.txt",
|
|
140
|
+
printer: "My Printer",
|
|
141
|
+
success: (jobId) => console.log(jobId),
|
|
142
|
+
error: (err) => console.error(err)
|
|
143
|
+
})
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
---
|
|
147
|
+
|
|
148
|
+
## 🟢 Print File (Async)
|
|
149
|
+
|
|
150
|
+
```ts
|
|
151
|
+
const jobId = await printer.printFileAsync({
|
|
152
|
+
filename: "./file.txt",
|
|
153
|
+
printer: "My Printer"
|
|
154
|
+
})
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
---
|
|
158
|
+
|
|
159
|
+
# 📦 Job Management
|
|
160
|
+
|
|
161
|
+
---
|
|
162
|
+
|
|
163
|
+
## Get Job Details
|
|
164
|
+
|
|
165
|
+
```ts
|
|
166
|
+
const job = printer.getJob("My Printer", 42)
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
### Async
|
|
170
|
+
|
|
171
|
+
```ts
|
|
172
|
+
const job = await printer.getJobAsync("My Printer", 42)
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
---
|
|
176
|
+
|
|
177
|
+
## Cancel / Pause / Resume Job
|
|
178
|
+
|
|
179
|
+
```ts
|
|
180
|
+
printer.setJob("My Printer", 42, "CANCEL")
|
|
181
|
+
printer.setJob("My Printer", 42, "PAUSE")
|
|
182
|
+
printer.setJob("My Printer", 42, "RESUME")
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
---
|
|
186
|
+
|
|
187
|
+
## Get Supported Job Commands
|
|
188
|
+
|
|
189
|
+
```ts
|
|
190
|
+
const commands = printer.getSupportedJobCommands()
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
---
|
|
194
|
+
|
|
195
|
+
# 📄 Supported Print Formats
|
|
196
|
+
|
|
197
|
+
```ts
|
|
198
|
+
const formats = printer.getSupportedPrintFormats()
|
|
199
|
+
```
|
|
200
|
+
|
|
201
|
+
Typical values:
|
|
202
|
+
|
|
203
|
+
* `RAW`
|
|
204
|
+
* `TEXT`
|
|
205
|
+
* `COMMAND`
|
|
206
|
+
* `AUTO`
|
|
207
|
+
|
|
208
|
+
> Windows supports RAW/TEXT/COMMAND directly.
|
|
209
|
+
> macOS/Linux support additional formats via CUPS.
|
|
210
|
+
|
|
211
|
+
---
|
|
212
|
+
|
|
213
|
+
# 🧠 TypeScript Types
|
|
214
|
+
|
|
215
|
+
Fully typed. Example:
|
|
216
|
+
|
|
217
|
+
```ts
|
|
218
|
+
export interface PrintDirectOptions {
|
|
219
|
+
data: string | Buffer
|
|
220
|
+
printer?: string
|
|
221
|
+
type?: 'RAW' | 'TEXT' | 'COMMAND' | 'AUTO'
|
|
222
|
+
options?: { [key: string]: string }
|
|
223
|
+
}
|
|
224
|
+
```
|
|
225
|
+
|
|
226
|
+
---
|
|
227
|
+
|
|
228
|
+
# ⚡ Promise Wrappers Included
|
|
229
|
+
|
|
230
|
+
Built-in async wrappers:
|
|
231
|
+
|
|
232
|
+
* `printDirectAsync`
|
|
233
|
+
* `printFileAsync`
|
|
234
|
+
* `getPrintersAsync`
|
|
235
|
+
* `getPrinterAsync`
|
|
236
|
+
* `getJobAsync`
|
|
237
|
+
|
|
238
|
+
No extra wrapper needed.
|
|
239
|
+
|
|
240
|
+
---
|
|
241
|
+
|
|
242
|
+
# 🧪 Example Full Test
|
|
243
|
+
|
|
244
|
+
```ts
|
|
245
|
+
import * as printer from '@esslassi/electron-printer'
|
|
246
|
+
|
|
247
|
+
async function test() {
|
|
248
|
+
const printers = await printer.getPrintersAsync()
|
|
249
|
+
const defaultPrinter = printer.getDefaultPrinterName()
|
|
250
|
+
|
|
251
|
+
const jobId = await printer.printDirectAsync({
|
|
252
|
+
data: "Test print\n\n",
|
|
253
|
+
printer: defaultPrinter,
|
|
254
|
+
type: "RAW"
|
|
255
|
+
})
|
|
256
|
+
|
|
257
|
+
const job = await printer.getJobAsync(defaultPrinter!, Number(jobId))
|
|
258
|
+
|
|
259
|
+
console.log(job)
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
test()
|
|
263
|
+
```
|
|
264
|
+
|
|
265
|
+
---
|
|
266
|
+
|
|
267
|
+
# 🏗 Architecture
|
|
268
|
+
|
|
269
|
+
```
|
|
270
|
+
Node.js / Electron
|
|
271
|
+
↓
|
|
272
|
+
N-API
|
|
273
|
+
↓
|
|
274
|
+
PrinterFactory
|
|
275
|
+
↓
|
|
276
|
+
Windows | macOS | Linux drivers
|
|
277
|
+
```
|
|
278
|
+
|
|
279
|
+
Native C++ backend with platform-specific implementations.
|
|
280
|
+
|
|
281
|
+
---
|
|
282
|
+
|
|
283
|
+
# 🔧 Development
|
|
284
|
+
|
|
285
|
+
Build from source:
|
|
286
|
+
|
|
287
|
+
```bash
|
|
288
|
+
npx node-gyp rebuild
|
|
289
|
+
```
|
|
290
|
+
|
|
291
|
+
Electron:
|
|
292
|
+
|
|
293
|
+
```bash
|
|
294
|
+
npx electron-rebuild
|
|
295
|
+
```
|
|
296
|
+
|
|
297
|
+
---
|
|
298
|
+
|
|
299
|
+
# 📜 License
|
|
300
|
+
|
|
301
|
+
MIT
|
|
302
|
+
|
|
303
|
+
---
|
|
304
|
+
|
|
305
|
+
# 👨💻 Author
|
|
306
|
+
|
|
307
|
+
Esslassi
|
|
308
|
+
|
|
309
|
+
---
|
|
310
|
+
|
|
311
|
+
If you want, I can also generate:
|
|
312
|
+
|
|
313
|
+
* 🔥 NPM package.json template
|
|
314
|
+
* 🧱 binding.gyp optimized version
|
|
315
|
+
* ⚡ Prebuild support (no node-gyp required for users)
|
|
316
|
+
* 🧪 Jest test suite
|
|
317
|
+
* 📦 CLI tool version
|
|
318
|
+
|
|
319
|
+
Tell me the next step 🚀
|
package/binding.gyp
CHANGED
|
@@ -1,57 +1,57 @@
|
|
|
1
|
-
{
|
|
2
|
-
"targets": [
|
|
3
|
-
{
|
|
4
|
-
"target_name": "electron_printer",
|
|
5
|
-
"sources": [
|
|
6
|
-
"src/main.cpp",
|
|
7
|
-
"src/print.cpp",
|
|
8
|
-
"src/printer_factory.cpp"
|
|
9
|
-
],
|
|
10
|
-
"include_dirs": [
|
|
11
|
-
"<!@(node -p \"require('node-addon-api').include\")"
|
|
12
|
-
],
|
|
13
|
-
"dependencies": [
|
|
14
|
-
"<!(node -p \"require('node-addon-api').gyp\")"
|
|
15
|
-
],
|
|
16
|
-
"defines": [ "NAPI_CPP_EXCEPTIONS" ],
|
|
17
|
-
"conditions": [
|
|
18
|
-
['OS=="win"', {
|
|
19
|
-
"sources": ["src/windows_printer.cpp"],
|
|
20
|
-
"libraries": ["winspool.lib"],
|
|
21
|
-
"msvs_settings": {
|
|
22
|
-
"VCCLCompilerTool": {
|
|
23
|
-
"ExceptionHandling": 1
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
}],
|
|
27
|
-
['OS=="mac"', {
|
|
28
|
-
"sources": ["src/mac_printer.cpp"],
|
|
29
|
-
"libraries": ["-lcups"],
|
|
30
|
-
"include_dirs": [
|
|
31
|
-
"/usr/include/cups"
|
|
32
|
-
],
|
|
33
|
-
"xcode_settings": {
|
|
34
|
-
"OTHER_CFLAGS": ["-Wall"],
|
|
35
|
-
"GCC_ENABLE_CPP_EXCEPTIONS": "YES",
|
|
36
|
-
"CLANG_CXX_LIBRARY": "libc++",
|
|
37
|
-
"MACOSX_DEPLOYMENT_TARGET": "10.7"
|
|
38
|
-
}
|
|
39
|
-
}],
|
|
40
|
-
['OS=="linux"', {
|
|
41
|
-
"sources": ["src/linux_printer.cpp"],
|
|
42
|
-
"libraries": ["-lcups"],
|
|
43
|
-
"include_dirs": [
|
|
44
|
-
"/usr/include/cups"
|
|
45
|
-
],
|
|
46
|
-
"cflags": [
|
|
47
|
-
"-Wall",
|
|
48
|
-
"-fexceptions"
|
|
49
|
-
],
|
|
50
|
-
"cflags_cc": [
|
|
51
|
-
"-fexceptions"
|
|
52
|
-
]
|
|
53
|
-
}]
|
|
54
|
-
]
|
|
55
|
-
}
|
|
56
|
-
]
|
|
57
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"targets": [
|
|
3
|
+
{
|
|
4
|
+
"target_name": "electron_printer",
|
|
5
|
+
"sources": [
|
|
6
|
+
"src/main.cpp",
|
|
7
|
+
"src/print.cpp",
|
|
8
|
+
"src/printer_factory.cpp"
|
|
9
|
+
],
|
|
10
|
+
"include_dirs": [
|
|
11
|
+
"<!@(node -p \"require('node-addon-api').include\")"
|
|
12
|
+
],
|
|
13
|
+
"dependencies": [
|
|
14
|
+
"<!(node -p \"require('node-addon-api').gyp\")"
|
|
15
|
+
],
|
|
16
|
+
"defines": [ "NAPI_CPP_EXCEPTIONS" ],
|
|
17
|
+
"conditions": [
|
|
18
|
+
['OS=="win"', {
|
|
19
|
+
"sources": ["src/windows_printer.cpp"],
|
|
20
|
+
"libraries": ["winspool.lib"],
|
|
21
|
+
"msvs_settings": {
|
|
22
|
+
"VCCLCompilerTool": {
|
|
23
|
+
"ExceptionHandling": 1
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
}],
|
|
27
|
+
['OS=="mac"', {
|
|
28
|
+
"sources": ["src/mac_printer.cpp"],
|
|
29
|
+
"libraries": ["-lcups"],
|
|
30
|
+
"include_dirs": [
|
|
31
|
+
"/usr/include/cups"
|
|
32
|
+
],
|
|
33
|
+
"xcode_settings": {
|
|
34
|
+
"OTHER_CFLAGS": ["-Wall"],
|
|
35
|
+
"GCC_ENABLE_CPP_EXCEPTIONS": "YES",
|
|
36
|
+
"CLANG_CXX_LIBRARY": "libc++",
|
|
37
|
+
"MACOSX_DEPLOYMENT_TARGET": "10.7"
|
|
38
|
+
}
|
|
39
|
+
}],
|
|
40
|
+
['OS=="linux"', {
|
|
41
|
+
"sources": ["src/linux_printer.cpp"],
|
|
42
|
+
"libraries": ["-lcups"],
|
|
43
|
+
"include_dirs": [
|
|
44
|
+
"/usr/include/cups"
|
|
45
|
+
],
|
|
46
|
+
"cflags": [
|
|
47
|
+
"-Wall",
|
|
48
|
+
"-fexceptions"
|
|
49
|
+
],
|
|
50
|
+
"cflags_cc": [
|
|
51
|
+
"-fexceptions"
|
|
52
|
+
]
|
|
53
|
+
}]
|
|
54
|
+
]
|
|
55
|
+
}
|
|
56
|
+
]
|
|
57
|
+
}
|