Skip to content

Commit 53e56c1

Browse files
author
Cameron Lowell Palmer
committed
Add the ability to compile the libraries with a CMake generated project
1 parent 510db5f commit 53e56c1

35 files changed

+1144
-1
lines changed

ZXingObjC/CMakeLists.txt

Lines changed: 112 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,112 @@
1+
cmake_minimum_required( VERSION 3.5 )
2+
3+
project( ZXingObjC VERSION 3.4.5 )
4+
5+
option( ZXINGOBJC_AZTEC "Aztec barcode support" TRUE )
6+
option( ZXINGOBJC_DATAMATRIX "Datamatrix support" TRUE )
7+
option( ZXINGOBJC_MAXICODE "Maxicode support" TRUE )
8+
option( ZXINGOBJC_ONED "1D barcode support" TRUE )
9+
option( ZXINGOBJC_PDF417 "PDF417 support" TRUE )
10+
option( ZXINGOBJC_QRCODE "QR code support" TRUE )
11+
12+
add_subdirectory( client )
13+
add_subdirectory( common )
14+
add_subdirectory( core )
15+
16+
add_subdirectory( aztec )
17+
add_subdirectory( datamatrix )
18+
add_subdirectory( maxicode )
19+
add_subdirectory( multi )
20+
add_subdirectory( oned )
21+
add_subdirectory( pdf417 )
22+
add_subdirectory( qrcode )
23+
24+
25+
set( SOURCE_FILES
26+
ZXMultiFormatReader.m
27+
ZXMultiFormatWriter.m )
28+
29+
set( HEADER_FILES
30+
ZXMultiFormatReader.h
31+
ZXMultiFormatWriter.h )
32+
33+
add_library( zxing SHARED ${HEADER_FILES} ${SOURCE_FILES} )
34+
35+
target_link_libraries( zxing PRIVATE client common core multi )
36+
find_library( AVFOUNDATION_FRAMEWORK AVFoundation )
37+
find_library( QUARTZCORE_FRAMEWORK QuartzCore )
38+
target_link_libraries( zxing PRIVATE ${AVFOUNDATION_FRAMEWORK} ${QUARTZCORE_FRAMEWORK} )
39+
40+
if( CMAKE_SYSTEM_NAME STREQUAL Darwin )
41+
find_library( COCOA_FRAMEWORK Cocoa )
42+
find_library( COREMEDIA_FRAMEWORK CoreMedia )
43+
target_link_libraries( zxing PRIVATE ${COCOA_FRAMEWORK} ${COREMEDIA_FRAMEWORK} )
44+
endif()
45+
46+
if( CMAKE_SYSTEM_NAME STREQUAL iOS )
47+
find_library( UIKIT_FRAMEWORK UIKit )
48+
find_library( COREGRAPHICS_FRAMEWORK CoreGraphics )
49+
find_library( COREVIDEO_FRAMEWORK CoreVideo )
50+
find_library( IMAGEIO_FRAMEWORK ImageIO )
51+
target_link_libraries( zxing
52+
PRIVATE
53+
${COREGRAPHICS_FRAMEWORK}
54+
${COREVIDEO_FRAMEWORK}
55+
${IMAGEIO_FRAMEWORK}
56+
${UIKIT_FRAMEWORK} )
57+
endif()
58+
59+
set( ZXINGOBJC_PUBLIC_HEADERS )
60+
list( APPEND ZXINGOBJC_PUBLIC_HEADERS ${CMAKE_CURRENT_LIST_DIR}/core/ZXingObjCCore.h )
61+
list( APPEND ZXINGOBJC_PUBLIC_HEADERS ${CMAKE_CURRENT_BINARY_DIR}/ZXingObjC.h )
62+
if( ZXINGOBJC_AZTEC )
63+
target_link_libraries( zxing PRIVATE aztec )
64+
target_include_directories( zxing PUBLIC aztec )
65+
list( APPEND ZXINGOBJC_PUBLIC_HEADERS ${CMAKE_CURRENT_LIST_DIR}/aztec/ZXingObjCAztec.h )
66+
endif( ZXINGOBJC_AZTEC )
67+
68+
if( ZXINGOBJC_DATAMATRIX )
69+
target_link_libraries( zxing PRIVATE datamatrix )
70+
target_include_directories( zxing PUBLIC datamatrix )
71+
list( APPEND ZXINGOBJC_PUBLIC_HEADERS ${CMAKE_CURRENT_LIST_DIR}/datamatrix/ZXingObjCDataMatrix.h )
72+
endif( ZXINGOBJC_DATAMATRIX )
73+
74+
if( ZXINGOBJC_MAXICODE )
75+
target_link_libraries( zxing PRIVATE maxicode )
76+
target_include_directories( zxing PUBLIC maxicode )
77+
list( APPEND ZXINGOBJC_PUBLIC_HEADERS ${CMAKE_CURRENT_LIST_DIR}/maxicode/ZXingObjCMaxiCode.h )
78+
endif( ZXINGOBJC_MAXICODE )
79+
80+
if( ZXINGOBJC_ONED )
81+
target_link_libraries( zxing PRIVATE oned )
82+
target_include_directories( zxing PUBLIC oned )
83+
list( APPEND ZXINGOBJC_PUBLIC_HEADERS ${CMAKE_CURRENT_LIST_DIR}/oned/ZXingObjCOneD.h )
84+
endif( ZXINGOBJC_ONED )
85+
86+
if( ZXINGOBJC_PDF417 )
87+
target_link_libraries( zxing PRIVATE pdf417 )
88+
target_include_directories( zxing PUBLIC pdf417 )
89+
list( APPEND ZXINGOBJC_PUBLIC_HEADERS ${CMAKE_CURRENT_LIST_DIR}/pdf417/ZXingObjCPDF417.h )
90+
endif( ZXINGOBJC_PDF417 )
91+
92+
if( ZXINGOBJC_QRCODE )
93+
target_link_libraries( zxing PRIVATE qrcode )
94+
target_include_directories( zxing PUBLIC qrcode )
95+
list( APPEND ZXINGOBJC_PUBLIC_HEADERS ${CMAKE_CURRENT_LIST_DIR}/qrcode/ZXingObjCQRCode.h )
96+
endif( ZXINGOBJC_QRCODE )
97+
98+
list( APPEND ZXINGOBJC_PUBLIC_HEADERS ${CMAKE_CURRENT_LIST_DIR}/ZXMultiFormatReader.h )
99+
list( APPEND ZXINGOBJC_PUBLIC_HEADERS ${CMAKE_CURRENT_LIST_DIR}/ZXMultiFormatWriter.h )
100+
set_target_properties( zxing PROPERTIES
101+
FRAMEWORK TRUE
102+
OUTPUT_NAME ZXingObjC
103+
MACOSX_FRAMEWORK_IDENTIFIER com.zxing.ZXingObjC
104+
PUBLIC_HEADER "${ZXINGOBJC_PUBLIC_HEADERS}" )
105+
106+
target_sources( zxing PUBLIC ${ZXINGOBJC_PUBLIC_HEADERS} )
107+
108+
foreach( ZXINGOBJC_PUBLIC_HEADER ${ZXINGOBJC_PUBLIC_HEADERS} )
109+
get_filename_component( ZXINGOBJC_SUBSPEC ${ZXINGOBJC_PUBLIC_HEADER} NAME )
110+
string( APPEND ZXINGOBJC_UMBRELLA_IMPORTS "#import <ZXingObjC/${ZXINGOBJC_SUBSPEC}>\n" )
111+
endforeach()
112+
configure_file( ZXingObjC.h.in ${CMAKE_CURRENT_BINARY_DIR}/ZXingObjC.h )

ZXingObjC/ZXingObjC.h.in

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
/*
2+
* Copyright 2012 ZXing authors
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License");
5+
* you may not use this file except in compliance with the License.
6+
* You may obtain a copy of the License at
7+
*
8+
* http://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Unless required by applicable law or agreed to in writing, software
11+
* distributed under the License is distributed on an "AS IS" BASIS,
12+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
* See the License for the specific language governing permissions and
14+
* limitations under the License.
15+
*/
16+
17+
#import <Foundation/Foundation.h>
18+
19+
${ZXINGOBJC_UMBRELLA_IMPORTS}

ZXingObjC/aztec/CMakeLists.txt

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
cmake_minimum_required( VERSION 3.5 )
2+
3+
project( ZXingObjC-aztec )
4+
5+
set( HEADER_FILES
6+
ZXAztecWriter.h
7+
ZXingObjCAztec.h
8+
ZXAztecDetectorResult.h
9+
ZXAztecReader.h )
10+
11+
set( SOURCE_FILES
12+
ZXAztecDetectorResult.m
13+
ZXAztecReader.m
14+
ZXAztecWriter.m )
15+
16+
add_library( aztec STATIC ${HEADER_FILES} ${SOURCE_FILES} )
17+
target_link_libraries( aztec
18+
PRIVATE
19+
common
20+
common-detector
21+
common-reedsolomon
22+
core
23+
aztec-decoder
24+
aztec-detector
25+
aztec-encoder )
26+
target_include_directories( aztec
27+
PUBLIC
28+
${CMAKE_CURRENT_LIST_DIR} )
29+
30+
add_subdirectory( encoder )
31+
add_subdirectory( decoder )
32+
add_subdirectory( detector )
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
cmake_minimum_required( VERSION 3.5 )
2+
3+
project( ZXingObjC-aztec-decoder )
4+
5+
set( HEADER_FILES
6+
ZXAztecDecoder.h )
7+
8+
set( SOURCE_FILES
9+
ZXAztecDecoder.m )
10+
11+
add_library( aztec-decoder OBJECT ${HEADER_FILES} ${SOURCE_FILES} )
12+
target_link_libraries( aztec-decoder PRIVATE common )
13+
target_include_directories( aztec-decoder
14+
PRIVATE
15+
$<TARGET_PROPERTY:aztec,INCLUDE_DIRECTORIES>
16+
PUBLIC
17+
${CMAKE_CURRENT_LIST_DIR} )
18+
set_property( TARGET aztec-decoder APPEND_STRING PROPERTY COMPILE_FLAGS -fobjc-arc )
19+
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
cmake_minimum_required( VERSION 3.5 )
2+
3+
project( ZXingObjC-aztec-detector )
4+
5+
set( HEADER_FILES
6+
ZXAztecDetector.h )
7+
8+
set( SOURCE_FILES
9+
ZXAztecDetector.m )
10+
11+
add_library( aztec-detector OBJECT ${HEADER_FILES} ${SOURCE_FILES} )
12+
target_include_directories( aztec-detector
13+
PRIVATE
14+
$<TARGET_PROPERTY:aztec,INCLUDE_DIRECTORIES>
15+
PUBLIC
16+
${CMAKE_CURRENT_LIST_DIR} )
17+
set_property( TARGET aztec-detector APPEND_STRING PROPERTY COMPILE_FLAGS -fobjc-arc )
18+
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
cmake_minimum_required( VERSION 3.5 )
2+
3+
project( ZXingObjC-aztec-encoder )
4+
5+
set( HEADER_FILES
6+
ZXAztecEncoder.h
7+
ZXAztecHighLevelEncoder.h
8+
ZXAztecSimpleToken.h
9+
ZXAztecBinaryShiftToken.h
10+
ZXAztecState.h
11+
ZXAztecToken.h
12+
ZXAztecCode.h )
13+
14+
set( SOURCE_FILES
15+
ZXAztecToken.m
16+
ZXAztecState.m
17+
ZXAztecBinaryShiftToken.m
18+
ZXAztecCode.m
19+
ZXAztecHighLevelEncoder.m
20+
ZXAztecEncoder.m
21+
ZXAztecSimpleToken.m )
22+
23+
add_library( aztec-encoder OBJECT ${HEADER_FILES} ${SOURCE_FILES} )
24+
target_link_libraries( aztec-encoder PRIVATE common common-reedsolomon )
25+
target_include_directories( aztec-encoder
26+
PUBLIC
27+
${CMAKE_CURRENT_LIST_DIR} )
28+
set_property( TARGET aztec-encoder APPEND_STRING PROPERTY COMPILE_FLAGS -fobjc-arc )
29+

ZXingObjC/client/CMakeLists.txt

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
cmake_minimum_required( VERSION 3.5 )
2+
3+
project( ZXingObjC-client )
4+
5+
set( HEADER_FILES
6+
ZXCaptureDelegate.h
7+
ZXCGImageLuminanceSourceInfo.h
8+
ZXImage.h
9+
ZXCGImageLuminanceSource.h
10+
ZXCapture.h )
11+
12+
set( SOURCE_FILES
13+
ZXImage.m
14+
ZXCapture.m
15+
ZXCGImageLuminanceSource.m
16+
ZXCGImageLuminanceSourceInfo.m )
17+
18+
add_library( client OBJECT ${HEADER_FILES} ${SOURCE_FILES} )
19+
target_link_libraries( client PRIVATE common core )
20+
target_include_directories( client
21+
PUBLIC
22+
${CMAKE_CURRENT_LIST_DIR} )
23+
set_property( TARGET client APPEND_STRING PROPERTY COMPILE_FLAGS -fobjc-arc )
24+
25+
add_subdirectory( result )
Lines changed: 88 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,88 @@
1+
cmake_minimum_required( VERSION 3.5 )
2+
3+
project( ZXingObjC-client-result )
4+
5+
set( HEADER_FILES
6+
ZXEmailAddressParsedResult.h
7+
ZXSMSMMSResultParser.h
8+
ZXAddressBookAUResultParser.h
9+
ZXSMTPResultParser.h
10+
ZXResultParser.h
11+
ZXBizcardResultParser.h
12+
ZXTextParsedResult.h
13+
ZXURIParsedResult.h
14+
ZXTelParsedResult.h
15+
ZXProductParsedResult.h
16+
ZXGeoParsedResult.h
17+
ZXBookmarkDoCoMoResultParser.h
18+
ZXWifiParsedResult.h
19+
ZXParsedResultType.h
20+
ZXISBNParsedResult.h
21+
ZXVINParsedResult.h
22+
ZXCalendarParsedResult.h
23+
ZXSMSParsedResult.h
24+
ZXExpandedProductParsedResult.h
25+
ZXSMSTOMMSTOResultParser.h
26+
ZXVCardResultParser.h
27+
ZXURIResultParser.h
28+
ZXAbstractDoCoMoResultParser.h
29+
ZXParsedResult.h
30+
ZXEmailAddressResultParser.h
31+
ZXEmailDoCoMoResultParser.h
32+
ZXAddressBookDoCoMoResultParser.h
33+
ZXProductResultParser.h
34+
ZXVEventResultParser.h
35+
ZXTelResultParser.h
36+
ZXWifiResultParser.h
37+
ZXGeoResultParser.h
38+
ZXExpandedProductResultParser.h
39+
ZXAddressBookParsedResult.h
40+
ZXISBNResultParser.h
41+
ZXURLTOResultParser.h
42+
ZXVINResultParser.h )
43+
44+
set( SOURCE_FILES
45+
ZXEmailAddressResultParser.m
46+
ZXParsedResult.m
47+
ZXURIResultParser.m
48+
ZXAbstractDoCoMoResultParser.m
49+
ZXVCardResultParser.m
50+
ZXTelResultParser.m
51+
ZXVEventResultParser.m
52+
ZXProductResultParser.m
53+
ZXAddressBookDoCoMoResultParser.m
54+
ZXEmailDoCoMoResultParser.m
55+
ZXGeoResultParser.m
56+
ZXWifiResultParser.m
57+
ZXURLTOResultParser.m
58+
ZXVINResultParser.m
59+
ZXISBNResultParser.m
60+
ZXAddressBookParsedResult.m
61+
ZXExpandedProductResultParser.m
62+
ZXTextParsedResult.m
63+
ZXURIParsedResult.m
64+
ZXBizcardResultParser.m
65+
ZXResultParser.m
66+
ZXSMTPResultParser.m
67+
ZXAddressBookAUResultParser.m
68+
ZXSMSMMSResultParser.m
69+
ZXEmailAddressParsedResult.m
70+
ZXProductParsedResult.m
71+
ZXTelParsedResult.m
72+
ZXBookmarkDoCoMoResultParser.m
73+
ZXWifiParsedResult.m
74+
ZXGeoParsedResult.m
75+
ZXSMSTOMMSTOResultParser.m
76+
ZXExpandedProductParsedResult.m
77+
ZXSMSParsedResult.m
78+
ZXCalendarParsedResult.m
79+
ZXVINParsedResult.m
80+
ZXISBNParsedResult.m )
81+
82+
add_library( client-result OBJECT ${HEADER_FILES} ${SOURCE_FILES} )
83+
target_link_libraries( client-result PRIVATE common core oned )
84+
target_include_directories( client-result
85+
PUBLIC
86+
${CMAKE_CURRENT_LIST_DIR} )
87+
set_property( TARGET client-result APPEND_STRING PROPERTY COMPILE_FLAGS -fobjc-arc )
88+

0 commit comments

Comments
 (0)