@@ -148,6 +148,10 @@ cmake --install build/
148
148
# cmake --install build/ --prefix ./dist/install --strip
149
149
# sudo cp -R ./dist/install/include/* /usr/local/include/
150
150
# sudo cp -R ./dist/install/lib/cmake/cmdr11 /usr/local/lib/cmake/
151
+ #
152
+ # macOS users could install to Homebrew directly without super privilidges:
153
+ # cmake --install build/ --prefix $(brew --prefix) --strip
154
+ #
151
155
rm -rf ./build
152
156
cd ..
153
157
```
@@ -202,107 +206,30 @@ For more information, please refer to the chapter [Others](#others).
202
206
203
207
# ### CMake ExternalProject
204
208
205
- Adding cmdr11 with ` ExternalProject` is possible. A ` deps-cmdr11.cmake` could be:
206
-
207
- ` ` ` cmake
208
- #
209
- # FOR CMDR11
210
- #
211
-
212
- # message(STATUS "cmdr-cxx: defined macro add_cmdr_cxx_to")
213
- macro(add_cmdr_cxx_to target)
214
- find_package(cmdr11)
215
-
216
- set(CMDR_CXX_STAGE_DIR " ${CMAKE_CURRENT_BINARY_DIR} /cmdr-cxx-stage" )
217
-
218
- option(CMAKE_VERBOSE_DEBUG " for cmdr-cxx, enable CMAKE_VERBOSE_MAKEFILE to print command line before execute them" OFF)
219
- option(CMDR_NO_3RDPARTY " for cmdr-cxx, disable source codes and targets alternate to yaml-cpp and others" ON)
220
-
221
- if(${CMDR11_FOUND} )
222
- message(STATUS " cmdr-cxx: package FOUND at ${CMDR11_INCLUDE_DIR} , ${CMDR11_VERSION} " )
223
- message(STATUS " cmdr-cxx: add cmdr-cxx v${CMDR11_VERSION_STRING} module to '${target} ' from CMake Modules registry." )
224
- target_link_libraries(${target}
225
- PRIVATE
226
- ${CMDR11_LIBRARIES}
227
- )
228
- else ()
229
- message(STATUS " cmdr-cxx: not found, try pulling a local one..." )
230
-
231
- set(CMDR_CXX_TGT_NAME " third-cmdr-cxx" )
232
- include(ExternalProject)
233
- ExternalProject_Add(${CMDR_CXX_TGT_NAME}
234
- GIT_REPOSITORY https://github.com/hedzr/cmdr-cxx
235
- GIT_TAG origin/master # v0.3.13
236
- GIT_SHALLOW 1
237
- GIT_PROGRESS ON
238
-
239
- # STEP_TARGETS build
240
- # SOURCE_DIR "${PROJECT_SOURCE_DIR}/third-party/cmdr-cxx-src"
241
- # BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}/cmdr-cxx-build"
242
- CMAKE_ARGS
243
- -DCMAKE_VERBOSE_DEBUG:BOOL=${CMAKE_VERBOSE_DEBUG}
244
- -DCMDR_NO_3RDPARTY:BOOL=${CMDR_NO_3RDPARTY}
245
- -DENABLE_TESTS:BOOL=OFF
246
- -DENABLE_CLI_APP:BOOL=OFF
247
- -DENABLE_AUTOMATE_TESTS:BOOL=OFF
248
- -DBUILD_DOCUMENTATION:BOOL=OFF
249
- -DBUILD_EXAMPLES:BOOL=OFF
250
- --no-warn-unused-cli
251
- -DCMAKE_BUILD_TYPE:STRING=${CMAKE_BUILD_TYPE}
252
- -DCMAKE_INSTALL_PREFIX:PATH=${CMDR_CXX_STAGE_DIR}
253
-
254
- # -DCMAKE_INSTALL_PREFIX:PATH=${CMAKE_INSTALL_PREFIX}
255
- # -DCMAKE_INSTALL_PREFIX:PATH=${EXECUTABLE_OUTPUT_PATH}
256
- BUILD_COMMAND ${CMAKE_COMMAND} -E echo " [cmdr-cxx] Starting $<CONFIG> build, install_prefix: ${CMAKE_INSTALL_PREFIX} or ${CMDR_CXX_STAGE_DIR} , BINARY_DIR: <BINARY_DIR>"
257
-
258
- # COMMAND ${CMAKE_COMMAND} -E sudo "chmod a+w /usr/local/lib"
259
- COMMAND ${CMAKE_COMMAND} --build < BINARY_DIR> --config $< CONFIG>
260
- COMMAND ${CMAKE_COMMAND} -E echo " [cmdr-cxx] $<CONFIG> build complete"
261
- )
262
-
263
- message(STATUS " cmdr-cxx: add '${CMDR_CXX_TGT_NAME} ' module to '${target} ' from building dir." )
264
- message(STATUS " cmdr-cxx: CI_RUNNING = $ENV {CI_RUNNING}" )
265
- message(STATUS " cmdr-cxx: add_dependencies" )
266
- add_dependencies(${target} ${CMDR_CXX_TGT_NAME} )
267
-
268
- set(CMDR11_INCLUDE_DIR ${CMDR_CXX_STAGE_DIR} /include)
269
- set(CMDR11_LIB_DIR ${CMDR_CXX_STAGE_DIR} /lib)
270
- endif ()
271
-
272
- target_include_directories(${target} PRIVATE
273
- $< BUILD_INTERFACE:${CMAKE_GENERATED_DIR} >
274
- $< INSTALL_INTERFACE:include>
275
- /usr/local/include
276
- /opt/homebrew/include
277
-
278
- # ${CMDR_CXX_STAGE_DIR}/include
279
- ${CMDR11_INCLUDE_DIR}
280
- )
281
- target_link_directories(${target} PRIVATE
282
- /usr/local/lib
283
-
284
- # ${CMDR_CXX_STAGE_DIR}/lib
285
- ${CMDR11_LIBRARY_DIR}
209
+ Adding cmdr11 with ` ExternalProject` is possible. A ` load-cmdr-cxx.cmake` was provided to make integrating ` cmdr-cxx` easier.
286
210
287
- # ${CMAKE_CURRENT_BINARY_DIR}/${CMDR_CXX_TGT_NAME}-prefix/src/${CMDR_CXX_TGT_NAME}-build
288
- )
289
- message(STATUS " cmdr-cxx: include-dir = ${CMDR11_INCLUDE_DIR} " )
290
- endmacro ()
291
- ```
292
-
293
- And the only things you need to do in your CMakeLists.txt are:
211
+ Extract ` cmake/load-cmdr-cxx.cmake` into your project, load it and use ` add-cmdr-cxx-to` macro. For example, your cli-app could be:
294
212
295
213
` ` ` cmake
214
+ # define_cxx_executable_project(myapp
215
+ # PREFIX myapp
216
+ # LIBRARIES ${myapp_libs}
217
+ # SOURCES ${myapp_source_files}
218
+ # INCLUDE_DIRECTORIES ${myapp_INCDIR}
219
+ # )
220
+ # enable_version_increaser(myapp-cli myapp my MY_)
221
+
296
222
project(cmdr-cli-demo)
297
223
add_executable(${PROJECT_NAME} cmdr_main.cc)
298
224
target_include_directories(${PROJECT_NAME} PRIVATE
299
225
$< BUILD_INTERFACE:${CMAKE_GENERATED_DIR} >
300
226
)
301
- include(deps-cmdr11) # include our deps-cmdr11.cmake
302
- add_cmdr_cxx_to(${PROJECT_NAME})
227
+
228
+ include(load-cmdr-cxx) # load ME here.
229
+ add_cmdr_cxx_to(myapp) # attach cmdr11::cmdr11
303
230
```
304
231
305
- That's all .
232
+ It works .
306
233
307
234
### Integrate to your cmake script
308
235
@@ -321,7 +248,7 @@ set_target_properties(${PROJECT_NAME} PROPERTIES
321
248
)
322
249
```
323
250
324
- Or you can download [ deps-cmdr11 .cmake] ( https://github.com/hedzr/cmdr-cxx/blob/master/cmake/deps-cmdr11 .cmake ) and
251
+ Or you can download [ load-cmdr-cxx .cmake] ( https://github.com/hedzr/cmdr-cxx/blob/master/cmake/load-cmdr-cxx .cmake ) and
325
252
include it:
326
253
327
254
``` cmake
0 commit comments