Skip to content

Commit 3830f71

Browse files
authored
Merge branch 'master' into basic_113
2 parents c434f6e + 869eaad commit 3830f71

File tree

1 file changed

+110
-1
lines changed

1 file changed

+110
-1
lines changed

README.md

+110-1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
12
<h2>Hello, <code>Static</code> Library!</h2>
23
<h3>Creating, Building and Using Static Library</h3>
34
</br>
@@ -179,10 +180,103 @@ c++ ./bin/main.cxx.o -o ./bin/main_113 ./bin/liblib_113.a
179180
@Twitter: twitter.com/cnruby<br/>
180181

181182
@Blogspot: cnruby.blogspot.com
183+
=======
184+
# C++ Application with 'CMake'
185+
186+
## Prerequisite
187+
188+
### OS Environment
189+
- MacOS 10.11.6+
190+
- Ubuntu 20.04+
191+
192+
### Language Environment
193+
- [Clang 8.0.0+](https://clang.llvm.org/)
194+
- [Python 3.7+](https://www.python.org/)
195+
- [Ruby 2.7.1+](https://www.ruby-lang.org/en/)
196+
- [Rust 1.42.0+](https://www.rust-lang.org/)
197+
198+
### VS Code
199+
- [VS Code](https://code.visualstudio.com/) OR [Eclipse Theia](https://theia-ide.org/)
200+
201+
### VS Code Extension
202+
- [C/C++](https://marketplace.visualstudio.com/items?itemName=ms-vscode.cpptools)
203+
- [CMake Tool](https://marketplace.visualstudio.com/items?itemName=ms-vscode.cmake-tools)
204+
- [CMake](https://marketplace.visualstudio.com/items?itemName=twxs.cmake)
205+
- [reStructuredText](https://marketplace.visualstudio.com/items?itemName=lextudio.restructuredtext)
206+
- [Markdown All in One](https://marketplace.visualstudio.com/items?itemName=yzhang.markdown-all-in-one)
207+
- [Python](https://marketplace.visualstudio.com/items?itemName=ms-python.python)
208+
- [PlantUML](https://marketplace.visualstudio.com/items?itemName=jebbs.plantuml)
209+
- [cmake-format](https://marketplace.visualstudio.com/items?itemName=cheshirekow.cmake-format)
210+
211+
### Tool and Library
212+
- [CMake](https://cmake.org/)
213+
- [Ninja](https://ninja-build.org/)
214+
- [clang-format](https://clang.llvm.org/docs/ClangFormatStyleOptions.html)
215+
- [cmake_format](https://github.com/cheshirekow/cmake_format)
216+
- [Doxygen](http://www.doxygen.nl/)
217+
- [Graphviz](http://graphviz.org/)
218+
- [Sphinx](https://www.sphinx-doc.org/)
219+
- [Sphinx bootstrap theme](https://github.com/ryan-roemer/sphinx-bootstrap-theme)
220+
- [Library libpng 1.6.37+](http://www.libpng.org/pub/png/libpng.html)
221+
- [Library boost 1.72.0+](https://www.boost.org/)
222+
- [Library gettext 0.20.1](https://www.gnu.org/software/gettext/)
223+
- [Library SQLite 3.31.1+](https://www.sqlite.org/index.html)
224+
- [Library SQLite 3.8.10.2+](https://www.sqlite.org/index.html) For "basic_126"
225+
226+
### Library on Ubuntu
227+
- Library language-pack-de
228+
- Library language-pack-zh-hans
229+
- Library language-pack-zh-hant, optional
230+
231+
## Liste
232+
- **Hello, CMake!** Hello Application with 'CMake' "basic_101" [Youtube Video](https://youtu.be/I2-fIgkGfy8) | [Code](https://github.com/cnruby/w3h1_cmake/tree/basic_101)
233+
- **Hello, Ninja!** Hello Application with 'CMake' and 'Ninja' "basic_102" [Youtube Video](https://youtu.be/wPpknWBG3v4) | [Code](https://github.com/cnruby/w3h1_cmake/tree/basic_102)
234+
- **Hello, 'ccmake'!** 'CMake' Tool 'ccmake' "basic_103" [Youtube Video](https://youtu.be/yV7kopPr2Dk) | [Code](https://github.com/cnruby/w3h1_cmake/tree/basic_103)
235+
- **Hello, 'cmake'!** Where are The 'CMake' Commands from? "basic_104" [Youtube Video](https://youtu.be/Dkfdqyeh4OM) | [Code](https://github.com/cnruby/w3h1_cmake/tree/basic_104)
236+
- **Hello, VS Code!** Develop The 'CMake' Project with VS Code "basic_105" [Youtube Video](https://youtu.be/GgImAx-TTfY) | [Code](https://github.com/cnruby/w3h1_cmake/tree/basic_105)
237+
- **Hello, CMake Script!** CMake's Scripting Language for Building Systems "basic_106" [Youtube Video](https://youtu.be/frS4Zc4zhMU) | [Code](https://github.com/cnruby/w3h1_cmake/tree/basic_106)
238+
- **Hello, 'cmake_format'!** How to Format the 'CMake's File "basic_107" [Youtube Video](https://youtu.be/mhM12sqDKpE) | [Code](https://github.com/cnruby/w3h1_cmake/tree/basic_107)
239+
- **Hello, C++ Style!** Formatting the 'C/C++'s Codes "basic_108" [Youtube Video](https://youtu.be/uN6OollV1xo) | [Code](https://github.com/cnruby/w3h1_cmake/tree/basic_108)
240+
- **Hello, C++ Header!** Using a Include File from Other Folder "basic_109" [Youtube Video](https://youtu.be/dHt_i7-sBNM) | [Code](https://github.com/cnruby/w3h1_cmake/tree/basic_109)
241+
- **Hello, Common Header!** Linking a Comman Include file in C++ "basic_110" [Youtube Video](https://youtu.be/XHcIdPFaTw0) | [Code](https://github.com/cnruby/w3h1_cmake/tree/basic_110)
242+
- **Hello, C++ Library!** Build a Single Header File with CMake "basic_111" [Youtube Video](https://youtu.be/a0FdU06UGtQ) | [Code](https://github.com/cnruby/w3h1_cmake/tree/basic_111)
243+
- **Hello, Default Include Paths!** Query the Default Include Directories "basic_112" [Youtube Video](https://youtu.be/-1hA3QqJKEw) | [Code](https://github.com/cnruby/w3h1_cmake/tree/basic_112)
244+
- **Hello, Static Library!** Creating, Building and Using Static Library "basic_113" [Youtube Video](https://youtu.be/ztmYpK7lFCI) | [Code](https://github.com/cnruby/w3h1_cmake/tree/basic_113)
245+
- **Hello, Different Folders!** Storing Header and Implementation File in Different Folders "basic_114" [Youtube Video](https://youtu.be/nTc_m7ELkzE) | [Code](https://github.com/cnruby/w3h1_cmake/tree/basic_114)
246+
- **Hello, PRIVATE/PUBLIC!** Difference between PRIVATE/PUBLIC with target_include_directories "basic_115" [Youtube Video](https://youtu.be/pmRWYYEXLoc) | [Code](https://github.com/cnruby/w3h1_cmake/tree/basic_115)
247+
- **Hello, Configure File!** Generating a C++ Configure File with CMake "basic_116" [Youtube Video](https://youtu.be/thJFmINbG0U) | [Code](https://github.com/cnruby/w3h1_cmake/tree/basic_116)
248+
- **Hello, Package!** Finding an Executable Package For C++ Code "basic_117" [Youtube Video](https://youtu.be/D5sny0H8jUM) | [Code](https://github.com/cnruby/w3h1_cmake/tree/basic_117)
249+
- **Hello, Doxygen!** Generating Documentation From annotated 'C/C++'s Sources "basic_118" "basic_118" [Youtube Video](https://youtu.be/T1CBiV09v8w) | [Code](https://github.com/cnruby/w3h1_cmake/tree/basic_118)
250+
- **Hello, Module!** Using Your Custom CMake-Find Module "basic_119" [Youtube Video](https://youtu.be/7SkNPLFLrEc) | [Code](https://github.com/cnruby/w3h1_cmake/tree/basic_119)
251+
- **Hello, Breathe!** Generating functional Documentation For 'C/C++'s Sources "basic_120" [Youtube Video](https://youtu.be/RE6rbuy11Z0) | [Code](https://github.com/cnruby/w3h1_cmake/tree/basic_120)
252+
- **Hello, Third Party Library!** Using Third Party Library For C++ Sources "basic_121" [Youtube Video](https://youtu.be/fPAShAPvlio) | [Code](https://github.com/cnruby/w3h1_cmake/tree/basic_121)
253+
- **Hello, Library's Components!** Using Library's Components For C++ Sources "basic_122" [Youtube Video](https://youtu.be/AMn65HQ5WAE) | [Code](https://github.com/cnruby/w3h1_cmake/tree/basic_122)
254+
- **Hello, Module's Variables!** Using Find-Module's Variables with CMake Sources "basic_123" [Youtube Video](https://youtu.be/UuMJGiRZmlA) | [Code](https://github.com/cnruby/w3h1_cmake/tree/basic_123)
255+
- **Hello, Targets!** Building multiple Targets using CMake on Ubuntu 20.04 "basic_124" [Youtube Video](https://youtu.be/-T4BMEI2agc) | [Code](https://github.com/cnruby/w3h1_cmake/tree/basic_124)
256+
- **Hello, MULTOS!** Building C++ Project on Multiple Operating System using CMake "basic_125" [Youtube Video](https://youtu.be/fBkFHSka2NA) | [Code](https://github.com/cnruby/w3h1_cmake/tree/basic_125)
257+
- **Hello, Multiple Versions!** Building Multiple Versions of a Shared Library Using CMake "basic_126" [Youtube Video](https://youtu.be/GmXbz3yfhWc) | [Code](https://github.com/cnruby/w3h1_cmake/tree/basic_126)
258+
- **Hello, $PATH!** Creating a Symbolic Link for a Library "basic_127" [Youtube Video](https://youtu.be/DFdMZvpCoCg) | [Code](https://github.com/cnruby/w3h1_cmake/tree/basic_127)
259+
- **Hello, GitHub! Formatting Library from Repositories Using CMake "basic_128" [Youtube Video](https://youtu.be/27zsR2It2K8) | [Code](https://github.com/cnruby/w3h1_cmake/tree/basic_128)
260+
- **Hello, Hunter!** CMake-based Cross-Platform Package Manager for C++ Projects "basic_129" [Youtube Video](https://youtu.be/QWBu7vykWpc) | [Code](https://github.com/cnruby/w3h1_cmake/tree/basic_129)
261+
- **Hello, Multiple Projects!** Creating a Solution with C++ Multiple Projects "basic_130" [Youtube Video](https://youtu.be/Vt5TEcFm0Hg) | [Code](https://github.com/cnruby/w3h1_cmake/tree/basic_130)
262+
- **Hello, Output!** Changing the output default directory in a dedicated directory "basic_131" [Youtube Video](https://youtu.be/HnXP8jgryC4) | [Code](https://github.com/cnruby/w3h1_cmake/tree/basic_131)
263+
- **Hello, Custom Target!** Adding and Using A Custom Target in CMake "basic_132" [Youtube Video](https://youtu.be/xcJbhFgVI04) | [Code](https://github.com/cnruby/w3h1_cmake/tree/basic_132)
264+
- **Hello, Ninja Multi-Config!** Creating a Solution with C++ Multiple Configuration "basic_133" [Youtube Video](https://youtu.be/TLpscEDcI1U) | [Short Video](https://youtu.be/l3DCnXTSJuA) | [Code](https://github.com/cnruby/w3h1_cmake/tree/basic_133)
265+
- **Hello, COMPILE_DEFINITIONS!** How to specify preprocessor definitions through CMake "basic_134" [Youtube Video](https://youtu.be/4GPcMCwWgVM) | [Code](https://github.com/cnruby/w3h1_cmake/tree/basic_134)
266+
- **Hello, Generator Expression!** How to Learn Generator Expression in CMake "basic_135" [Youtube Video](https://youtu.be/xZkakSO3_II) | [Code](https://github.com/cnruby/w3h1_cmake/tree/basic_135)
267+
- **Hello, Targets 2.0!** How to Use Generator Expression in C++ Project "basic_136" [Youtube Video](https://youtu.be/hEWES7JgrfU) | [Code](https://github.com/cnruby/w3h1_cmake/tree/basic_136)
268+
- **Hello, Object Library!** How to Create and Use The Object File in CMake "basic_137"<br/> [Youtube Video](https://youtu.be/xj1fx2Xsl-U) | [Short Video](https://youtu.be/edcA9puzDgU) | [Code](https://github.com/cnruby/w3h1_cmake/tree/basic_137)
269+
- **Hello, Object File!** How to Obtain and Apply The Object File of Library in CMake "basic_138"<br/> [Youtube Video](https://youtu.be/1LMmQ_3kjFA) | [Short Video](https://youtu.be/9Y-alzDxJpg) | [Code](https://github.com/cnruby/w3h1_cmake/tree/basic_138)
270+
- **Hello, install:exe!** How to install executable from the project to local "basic_139"<br/> [Youtube Video](https://youtu.be/nJj1efRi6oI) | [Short Video](https://youtu.be/edcA9puzDgU) | [Code](https://github.com/cnruby/w3h1_cmake/tree/basic_139)
271+
- **Hello, install:multi!** How to install executable on local with "Ninja Multi-Config" "basic_140" <br/> [Youtube Video](https://youtu.be/tCN-eFZN8xE) | [Short Video](https://youtu.be/oB6Ujd0BVno) | [Code](https://github.com/cnruby/w3h1_cmake/tree/basic_140)
272+
- **Hello, install:DESTDIR!** How to use CMake Environment Variable `DESTDIR` "basic_141" <br/> [Youtube Video](https://youtu.be/NtYyjwSjt9Q) | [Short Video](https://youtu.be/15Zrf_WZXPU) | [Code](https://github.com/cnruby/w3h1_cmake/tree/basic_141)
273+
274+
182275

183276

184277

185278
## References
279+
186280
- https://cmake.org/cmake/help/latest/command/include_directories.html
187281
- https://cmake.org/cmake/help/latest/command/target_include_directories.html
188282
- https://stackoverflow.com/questions/31969547/what-is-the-difference-between-include-directories-and-target-include-directorie
@@ -234,4 +328,19 @@ cmake --build build/ --clean-first -v &> v11.txt
234328
./bin/main_113
235329
rm -rf ./build/ ./bin/*
236330
./shell/start.sh
237-
```
331+
```
332+
=======
333+
- [Learning CMake: A beginner's guide](https://tuannguyen68.gitbooks.io/learning-cmake-a-beginner-s-guide/content/index.html)
334+
- [Modern CMake](https://cliutils.gitlab.io/modern-cmake/)
335+
- [CMake Community Wiki](https://gitlab.kitware.com/cmake/community/-/wikis/home)
336+
- [CMake BASIS](https://cmake-basis.github.io/quickstart.html)
337+
- [CMake Cookbook Github](https://github.com/dev-cafe/cmake-cookbook)
338+
- [CMake Cookbook 中文](https://chenxiaowei.gitbook.io/cmake-cookbook/)
339+
- [CMake questions forum](https://discourse.cmake.org)
340+
- [Getting started with cmake](https://riptutorial.com/cmake)
341+
342+
## @cnruby
343+
- [@Gitter](https://gitter.im/cnruby)
344+
- [@Blog](https://www.blogger.com/blogger.g?tab=mj1&blogID=19758264#allposts/postNum=0)
345+
- [@Twitter](https://twitter.com/cnruby)
346+

0 commit comments

Comments
 (0)