{"id":1765,"date":"2025-03-24T08:49:57","date_gmt":"2025-03-23T23:49:57","guid":{"rendered":"https:\/\/dexall.co.jp\/articles\/?p=1765"},"modified":"2025-03-24T08:49:57","modified_gmt":"2025-03-23T23:49:57","slug":"%e3%80%90%e4%bf%9d%e5%ad%98%e7%89%88%e3%80%91cmake%e3%81%ae%e4%bd%bf%e3%81%84%e6%96%b9%e5%ae%8c%e5%85%a8%e3%82%ac%e3%82%a4%e3%83%89-%e7%8f%be%e5%a0%b4%e3%81%a7%e4%bd%bf%e3%81%88%e3%82%8b%e5%ae%9f","status":"publish","type":"post","link":"https:\/\/dexall.co.jp\/articles\/?p=1765","title":{"rendered":"\u3010\u4fdd\u5b58\u7248\u3011CMake\u306e\u4f7f\u3044\u65b9\u5b8c\u5168\u30ac\u30a4\u30c9 &#8211; \u73fe\u5834\u3067\u4f7f\u3048\u308b\u5b9f\u8df5\u7684\u306a\u5c0e\u5165\u65b9\u6cd5\u3068\u5fdc\u7528\u30c6\u30af\u30cb\u30c3\u30af"},"content":{"rendered":"\n<div class=\"toc\"><br \/>\n<b>Warning<\/b>:  Undefined array key \"is_admin\" in <b>\/home\/xs392991\/dexall.co.jp\/public_html\/articles\/wp-content\/themes\/sango-theme\/library\/gutenberg\/dist\/classes\/Toc.php<\/b> on line <b>116<\/b><br \/>\n<br \/>\n<b>Warning<\/b>:  Undefined array key \"is_category_top\" in <b>\/home\/xs392991\/dexall.co.jp\/public_html\/articles\/wp-content\/themes\/sango-theme\/library\/gutenberg\/dist\/classes\/Toc.php<\/b> on line <b>121<\/b><br \/>\n<br \/>\n<b>Warning<\/b>:  Undefined array key \"is_top\" in <b>\/home\/xs392991\/dexall.co.jp\/public_html\/articles\/wp-content\/themes\/sango-theme\/library\/gutenberg\/dist\/classes\/Toc.php<\/b> on line <b>128<\/b><br \/>\n    <div id=\"toc_container\" class=\"sgb-toc--bullets js-smooth-scroll\" data-dialog-title=\"\u76ee\u6b21\">\n      <p class=\"toc_title\">\u76ee\u6b21 <\/p>\n      <ul class=\"toc_list\">  <li class=\"first\">    <a href=\"#i-0\">CMake\u3068\u306f\u4f55\u304b\uff1f\u521d\u5fc3\u8005\u306b\u3082\u308f\u304b\u308a\u3084\u3059\u304f\u89e3\u8aac<\/a>    <ul class=\"menu_level_1\">      <li class=\"first\">        <a href=\"#i-1\">\u5f93\u6765\u306emakefile\u304c\u62b1\u3048\u308b\u554f\u984c\u70b9\u3068\u9650\u754c<\/a>      <\/li>      <li>        <a href=\"#i-2\">CMake\u304c\u89e3\u6c7a\u3067\u304d\u308b\u958b\u767a\u73fe\u5834\u306e\u8ab2\u984c<\/a>      <\/li>      <li class=\"last\">        <a href=\"#i-3\">CMake\u3092\u4f7f\u3046\u30e1\u30ea\u30c3\u30c8\u30fb\u30c7\u30e1\u30ea\u30c3\u30c8<\/a>      <\/li>    <\/ul>  <\/li>  <li>    <a href=\"#i-4\">CMake\u3092\u30bc\u30ed\u304b\u3089\u59cb\u3081\u308b\u74b0\u5883\u69cb\u7bc9\u30ac\u30a4\u30c9<\/a>    <ul class=\"menu_level_1\">      <li class=\"first\">        <a href=\"#i-5\">Windows\/Mac\/Linux\u3067\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u624b\u9806<\/a>      <\/li>      <li>        <a href=\"#i-9\">VSCode\u3084Visual Studio\u3068\u306e\u9023\u643a\u8a2d\u5b9a<\/a>      <\/li>      <li class=\"last\">        <a href=\"#i-12\">\u30c8\u30e9\u30d6\u30eb\u30b7\u30e5\u30fc\u30c6\u30a3\u30f3\u30b0\uff1a\u3088\u304f\u3042\u308b\u74b0\u5883\u69cb\u7bc9\u306e\u554f\u984c\u3068\u89e3\u6c7a\u7b56<\/a>      <\/li>    <\/ul>  <\/li>  <li>    <a href=\"#i-13\">CMake\u306e\u57fa\u672c\u7684\u306a\u4f7f\u3044\u65b9\u3092\u7406\u89e3\u3057\u3088\u3046<\/a>    <ul class=\"menu_level_1\">      <li class=\"first\">        <a href=\"#i-14\">CMakeLists.txt\u306e\u57fa\u672c\u69cb\u6587\u3068\u91cd\u8981\u306a\u30b3\u30de\u30f3\u30c9<\/a>      <\/li>      <li>        <a href=\"#i-15\">\u30b7\u30f3\u30d7\u30eb\u306a\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u30d3\u30eb\u30c9\u65b9\u6cd5<\/a>      <\/li>      <li class=\"last\">        <a href=\"#i-16\">\u5909\u6570\u3068\u30ad\u30e3\u30c3\u30b7\u30e5\u306e\u4f7f\u3044\u65b9<\/a>      <\/li>    <\/ul>  <\/li>  <li>    <a href=\"#i-17\">\u5b9f\u8df5\u7684\u306aCMake\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u4f5c\u6210\u624b\u9806<\/a>    <ul class=\"menu_level_1\">      <li class=\"first\">        <a href=\"#i-18\">\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u69cb\u9020\u3068CMakeLists.txt\u306e\u914d\u7f6e<\/a>      <\/li>      <li>        <a href=\"#i-19\">\u5916\u90e8\u30e9\u30a4\u30d6\u30e9\u30ea\u306e\u8ffd\u52a0\u3068\u4f9d\u5b58\u95a2\u4fc2\u306e\u7ba1\u7406<\/a>      <\/li>      <li class=\"last\">        <a href=\"#i-20\">\u30d3\u30eb\u30c9\u8a2d\u5b9a\u306e\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u3068\u30aa\u30d7\u30b7\u30e7\u30f3\u306e\u8ffd\u52a0<\/a>      <\/li>    <\/ul>  <\/li>  <li>    <a href=\"#i-21\">CMake\u306e\u9ad8\u5ea6\u306a\u4f7f\u3044\u65b9\u3068\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9<\/a>    <ul class=\"menu_level_1\">      <li class=\"first\">        <a href=\"#i-22\">\u30e2\u30b8\u30e5\u30fc\u30eb\u5316\u3068\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u5206\u5272\u306e\u65b9\u6cd5<\/a>      <\/li>      <li>        <a href=\"#i-23\">\u30af\u30ed\u30b9\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u5bfe\u5fdc\u306e\u30c6\u30af\u30cb\u30c3\u30af<\/a>      <\/li>      <li class=\"last\">        <a href=\"#i-24\">CI\/CD\u30d1\u30a4\u30d7\u30e9\u30a4\u30f3\u3067\u306e\u6d3b\u7528\u65b9\u6cd5<\/a>      <\/li>    <\/ul>  <\/li>  <li class=\"last\">    <a href=\"#i-25\">\u30c8\u30e9\u30d6\u30eb\u30b7\u30e5\u30fc\u30c6\u30a3\u30f3\u30b0\u3068\u30c7\u30d0\u30c3\u30b0\u30c6\u30af\u30cb\u30c3\u30af<\/a>    <ul class=\"menu_level_1\">      <li class=\"first\">        <a href=\"#i-26\">CMake\u306e\u30c7\u30d0\u30c3\u30b0\u30ed\u30b0\u306e\u898b\u65b9\u3068\u6d3b\u7528\u65b9\u6cd5<\/a>      <\/li>      <li>        <a href=\"#i-27\">\u3088\u304f\u3042\u308b\u30a8\u30e9\u30fc\u3068\u305d\u306e\u89e3\u6c7a\u65b9\u6cd5<\/a>      <\/li>      <li class=\"last\">        <a href=\"#i-28\">\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u6700\u9069\u5316\u306e\u30dd\u30a4\u30f3\u30c8<\/a>      <\/li>    <\/ul>  <\/li><\/ul>\n      <a href=\"#\" class=\"sgb-toc-button js-toc-button\" rel=\"nofollow\" data-open-dialog=\"true\"><i class=\"fa fa-list\"><\/i><span class=\"sgb-toc-button__text\">\u76ee\u6b21\u3078<\/span><\/a>\n    <\/div><\/div><h2 class=\"wp-block-heading\" id=\"i-0\">CMake\u3068\u306f\u4f55\u304b\uff1f\u521d\u5fc3\u8005\u306b\u3082\u308f\u304b\u308a\u3084\u3059\u304f\u89e3\u8aac<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-1\">\u5f93\u6765\u306emakefile\u304c\u62b1\u3048\u308b\u554f\u984c\u70b9\u3068\u9650\u754c<\/h3>\n\n\n\n<p>\u30bd\u30d5\u30c8\u30a6\u30a7\u30a2\u958b\u767a\u306b\u304a\u3044\u3066\u3001makefile\u306f\u9577\u5e74\u4f7f\u7528\u3055\u308c\u3066\u304d\u305f\u30d3\u30eb\u30c9\u30b7\u30b9\u30c6\u30e0\u3067\u3059\u304c\u3001\u4ee5\u4e0b\u306e\u3088\u3046\u306a\u91cd\u5927\u306a\u554f\u984c\u70b9\u3092\u62b1\u3048\u3066\u3044\u307e\u3059\uff1a<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u4f9d\u5b58\u6027<\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Windows\u3067\u306f\u7570\u306a\u308b\u30d3\u30eb\u30c9\u30b7\u30b9\u30c6\u30e0\u304c\u5fc5\u8981<\/li>\n\n\n\n<li>\u30d1\u30b9\u306e\u533a\u5207\u308a\u6587\u5b57\u3084\u30b3\u30de\u30f3\u30c9\u306e\u9055\u3044\u306b\u3088\u308b\u4e92\u63db\u6027\u306e\u554f\u984c<\/li>\n\n\n\n<li>\u30b3\u30f3\u30d1\u30a4\u30e9\u3084\u30c4\u30fc\u30eb\u30c1\u30a7\u30fc\u30f3\u306e\u6307\u5b9a\u65b9\u6cd5\u304c\u74b0\u5883\u306b\u3088\u308a\u7570\u306a\u308b<\/li>\n<\/ul>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u4fdd\u5b88\u6027\u306e\u554f\u984c<\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u5927\u898f\u6a21\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3067\u306e\u7ba1\u7406\u304c\u56f0\u96e3<\/li>\n\n\n\n<li>\u4f9d\u5b58\u95a2\u4fc2\u306e\u7ba1\u7406\u304c\u8907\u96d1<\/li>\n\n\n\n<li>\u8a2d\u5b9a\u306e\u5909\u66f4\u3084\u8ffd\u52a0\u304c\u7169\u96d1<\/li>\n<\/ul>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u518d\u5229\u7528\u6027\u306e\u4f4e\u3055<\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u9593\u3067\u306emakefile\u306e\u5171\u6709\u304c\u56f0\u96e3<\/li>\n\n\n\n<li>\u74b0\u5883\u3054\u3068\u306b\u500b\u5225\u306e\u8abf\u6574\u304c\u5fc5\u8981<\/li>\n\n\n\n<li>\u6a19\u6e96\u5316\u3055\u308c\u305f\u65b9\u6cd5\u306e\u6b20\u5982<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-2\">CMake\u304c\u89e3\u6c7a\u3067\u304d\u308b\u958b\u767a\u73fe\u5834\u306e\u8ab2\u984c<\/h3>\n\n\n\n<p>CMake\u306f\u3001\u3053\u308c\u3089\u306e\u554f\u984c\u306b\u5bfe\u3057\u3066\u4ee5\u4e0b\u306e\u3088\u3046\u306a\u30bd\u30ea\u30e5\u30fc\u30b7\u30e7\u30f3\u3092\u63d0\u4f9b\u3057\u307e\u3059\uff1a<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u30af\u30ed\u30b9\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u5bfe\u5fdc<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">   # \u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u306b\u5fdc\u3058\u305f\u8a2d\u5b9a\u3092\u81ea\u52d5\u7684\u306b\u51e6\u7406\n   if(WIN32)\n       set(PLATFORM_LIBS \"winmm.lib\")\n   elseif(UNIX)\n       set(PLATFORM_LIBS \"libpthread.so\")\n   endif()<\/pre>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li>\u30d3\u30eb\u30c9\u30b7\u30b9\u30c6\u30e0\u306e\u751f\u6210<\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Visual Studio\u3001Unix Makefiles\u3001Ninja\u7b49\u3001\u69d8\u3005\u306a\u30d3\u30eb\u30c9\u30b7\u30b9\u30c6\u30e0\u306e\u30d5\u30a1\u30a4\u30eb\u3092\u81ea\u52d5\u751f\u6210<\/li>\n\n\n\n<li>IDE\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u30d5\u30a1\u30a4\u30eb\u3082\u81ea\u52d5\u751f\u6210\u53ef\u80fd<\/li>\n<\/ul>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li>\u4f9d\u5b58\u95a2\u4fc2\u306e\u7ba1\u7406<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">   # \u5916\u90e8\u30e9\u30a4\u30d6\u30e9\u30ea\u306e\u691c\u51fa\u3068\u8a2d\u5b9a\n   find_package(Boost REQUIRED COMPONENTS system filesystem)\n   target_link_libraries(${PROJECT_NAME} ${Boost_LIBRARIES})<\/pre>\n\n\n\n<ol start=\"4\" class=\"wp-block-list\">\n<li>\u30e2\u30b8\u30e5\u30fc\u30eb\u5316\u3068\u30b3\u30fc\u30c9\u518d\u5229\u7528<\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u9593\u3067\u8a2d\u5b9a\u3092\u5171\u6709\u53ef\u80fd<\/li>\n\n\n\n<li>\u30ab\u30b9\u30bf\u30e0\u30e2\u30b8\u30e5\u30fc\u30eb\u306e\u4f5c\u6210\u3068\u518d\u5229\u7528\u304c\u5bb9\u6613<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-3\">CMake\u3092\u4f7f\u3046\u30e1\u30ea\u30c3\u30c8\u30fb\u30c7\u30e1\u30ea\u30c3\u30c8<\/h3>\n\n\n\n<p>\u30e1\u30ea\u30c3\u30c8\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u30af\u30ed\u30b9\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u958b\u767a\u306e\u52b9\u7387\u5316<\/li>\n\n\n\n<li>\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u8a2d\u5b9a\u306e\u4e00\u5143\u7ba1\u7406<\/li>\n\n\n\n<li>\u8c4a\u5bcc\u306a\u30d3\u30eb\u30c9\u30b7\u30b9\u30c6\u30e0\u5bfe\u5fdc<\/li>\n\n\n\n<li>\u5f37\u529b\u306a\u4f9d\u5b58\u95a2\u4fc2\u7ba1\u7406<\/li>\n\n\n\n<li>\u62e1\u5f35\u6027\u3068\u67d4\u8edf\u6027<\/li>\n\n\n\n<li>\u30b3\u30df\u30e5\u30cb\u30c6\u30a3\u30b5\u30dd\u30fc\u30c8\u306e\u5145\u5b9f<\/li>\n<\/ul>\n\n\n\n<p>\u30c7\u30e1\u30ea\u30c3\u30c8\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u5b66\u7fd2\u66f2\u7dda\u304c\u6bd4\u8f03\u7684\u6025<\/li>\n\n\n\n<li>\u72ec\u81ea\u306e\u6587\u6cd5\u306e\u7fd2\u5f97\u304c\u5fc5\u8981<\/li>\n\n\n\n<li>\u8907\u96d1\u306a\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3067\u306f\u8a2d\u5b9a\u304c\u7169\u96d1\u306b\u306a\u308b\u53ef\u80fd\u6027<\/li>\n\n\n\n<li>\u30c7\u30d0\u30c3\u30b0\u304c\u6642\u3068\u3057\u3066\u56f0\u96e3<\/li>\n<\/ul>\n\n\n\n<p>\u4f7f\u7528\u4f8b\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># \u57fa\u672c\u7684\u306aCMake\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u4f8b\ncmake_minimum_required(VERSION 3.10)\nproject(MyProject)\n\n# \u5b9f\u884c\u30d5\u30a1\u30a4\u30eb\u306e\u4f5c\u6210\nadd_executable(${PROJECT_NAME} main.cpp)\n\n# \u30b3\u30f3\u30d1\u30a4\u30e9\u30aa\u30d7\u30b7\u30e7\u30f3\u306e\u8a2d\u5b9a\ntarget_compile_features(${PROJECT_NAME} PRIVATE cxx_std_17)\n\n# \u5916\u90e8\u30e9\u30a4\u30d6\u30e9\u30ea\u306e\u30ea\u30f3\u30af\ntarget_link_libraries(${PROJECT_NAME} PRIVATE external_lib)<\/pre>\n\n\n\n<p>\u3053\u306e\u3088\u3046\u306b\u3001CMake\u306f\u73fe\u4ee3\u306eC++\u958b\u767a\u306b\u304a\u3044\u3066\u3001\u52b9\u7387\u7684\u306a\u30d3\u30eb\u30c9\u30b7\u30b9\u30c6\u30e0\u306e\u69cb\u7bc9\u3068\u7ba1\u7406\u3092\u53ef\u80fd\u306b\u3059\u308b\u5f37\u529b\u306a\u30c4\u30fc\u30eb\u3068\u306a\u3063\u3066\u3044\u307e\u3059\u3002\u7279\u306b\u3001\u30af\u30ed\u30b9\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u958b\u767a\u3084\u5927\u898f\u6a21\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306b\u304a\u3044\u3066\u3001\u305d\u306e\u771f\u4fa1\u3092\u767a\u63ee\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-4\">CMake\u3092\u30bc\u30ed\u304b\u3089\u59cb\u3081\u308b\u74b0\u5883\u69cb\u7bc9\u30ac\u30a4\u30c9<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-5\">Windows\/Mac\/Linux\u3067\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u624b\u9806<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-6\">Windows\u3067\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb<\/h4>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u516c\u5f0f\u30a4\u30f3\u30b9\u30c8\u30fc\u30e9\u30fc\u3092\u4f7f\u7528\u3059\u308b\u65b9\u6cd5<\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/cmake.org\/download\/\">CMake\u516c\u5f0f\u30b5\u30a4\u30c8<\/a>\u304b\u3089\u6700\u65b0\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30e9\u30fc\u3092\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9<\/li>\n\n\n\n<li>\u30a4\u30f3\u30b9\u30c8\u30fc\u30e9\u30fc\u3092\u5b9f\u884c\u3057\u3001\u300cAdd CMake to system PATH\u300d\u30aa\u30d7\u30b7\u30e7\u30f3\u3092\u9078\u629e<\/li>\n<\/ul>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">   # \u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u78ba\u8a8d\n   cmake --version<\/pre>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li>\u30d1\u30c3\u30b1\u30fc\u30b8\u30de\u30cd\u30fc\u30b8\u30e3\u30fc\u3092\u4f7f\u7528\u3059\u308b\u65b9\u6cd5<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">   # chocolatey\u3092\u4f7f\u7528\u3059\u308b\u5834\u5408\n   choco install cmake\n\n   # scoop\u3092\u4f7f\u7528\u3059\u308b\u5834\u5408\n   scoop install cmake<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-7\">Mac\u3067\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb<\/h4>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Homebrew\u3092\u4f7f\u7528\u3059\u308b\u65b9\u6cd5\uff08\u63a8\u5968\uff09<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">   brew install cmake<\/pre>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li>\u516c\u5f0f\u30d1\u30c3\u30b1\u30fc\u30b8\u3092\u4f7f\u7528\u3059\u308b\u65b9\u6cd5<\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>CMake\u516c\u5f0f\u30b5\u30a4\u30c8\u304b\u3089dmg\u30d5\u30a1\u30a4\u30eb\u3092\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9<\/li>\n\n\n\n<li>\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u30d5\u30a9\u30eb\u30c0\u306b\u30c9\u30e9\u30c3\u30b0\uff06\u30c9\u30ed\u30c3\u30d7<\/li>\n\n\n\n<li>\u30bf\u30fc\u30df\u30ca\u30eb\u3067\u4ee5\u4e0b\u3092\u5b9f\u884c:<\/li>\n<\/ul>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">   sudo \"\/Applications\/CMake.app\/Contents\/bin\/cmake-gui\" --install<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-8\">Linux\u3067\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb<\/h4>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u30d1\u30c3\u30b1\u30fc\u30b8\u30de\u30cd\u30fc\u30b8\u30e3\u30fc\u3092\u4f7f\u7528\u3059\u308b\u65b9\u6cd5<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">   # Ubuntu\/Debian\n   sudo apt-get update\n   sudo apt-get install cmake\n\n   # CentOS\/RHEL\n   sudo yum install cmake\n\n   # Fedora\n   sudo dnf install cmake<\/pre>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li>\u30bd\u30fc\u30b9\u304b\u3089\u30d3\u30eb\u30c9\u3059\u308b\u65b9\u6cd5\uff08\u6700\u65b0\u7248\u304c\u5fc5\u8981\u306a\u5834\u5408\uff09<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">   wget https:\/\/github.com\/Kitware\/CMake\/releases\/download\/v3.28.0\/cmake-3.28.0.tar.gz\n   tar -zxvf cmake-3.28.0.tar.gz\n   cd cmake-3.28.0\n   .\/bootstrap\n   make\n   sudo make install<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-9\">VSCode\u3084Visual Studio\u3068\u306e\u9023\u643a\u8a2d\u5b9a<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-10\">Visual Studio Code\u306e\u8a2d\u5b9a<\/h4>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u5fc5\u8981\u306a\u62e1\u5f35\u6a5f\u80fd\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb<\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>CMake Tools<\/li>\n\n\n\n<li>C\/C++<\/li>\n\n\n\n<li>CMake Language Support<\/li>\n<\/ul>\n\n\n\n<ol class=\"wp-block-list\">\n<li>settings.json\u306e\u57fa\u672c\u8a2d\u5b9a<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">   {\n     \"cmake.configureOnOpen\": true,\n     \"cmake.buildDirectory\": \"${workspaceFolder}\/build\",\n     \"cmake.generator\": \"Ninja\"\n   }<\/pre>\n\n\n\n<ol start=\"3\" class=\"wp-block-list\">\n<li>\u5b9f\u8df5\u7684\u306a\u30ef\u30fc\u30af\u30d5\u30ed\u30fc\u8a2d\u5b9a<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">   {\n     \"cmake.debugConfig\": {\n       \"type\": \"cppdbg\",\n       \"request\": \"launch\",\n       \"program\": \"${command:cmake.launchTargetPath}\",\n       \"args\": [],\n       \"stopAtEntry\": false,\n       \"cwd\": \"${workspaceFolder}\",\n       \"environment\": []\n     }\n   }<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-11\">Visual Studio\u306e\u8a2d\u5b9a<\/h4>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Visual Studio\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u6642\u306e\u5fc5\u8981\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8<\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>C++\u306b\u3088\u308b\u30c7\u30b9\u30af\u30c8\u30c3\u30d7\u958b\u767a<\/li>\n\n\n\n<li>CMake\u30c4\u30fc\u30eb<\/li>\n<\/ul>\n\n\n\n<ol class=\"wp-block-list\">\n<li>CMake\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u958b\u304f\u624b\u9806<\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u30d5\u30a1\u30a4\u30eb &gt; \u958b\u304f &gt; CMake<\/li>\n\n\n\n<li>CMakeLists.txt\u3092\u9078\u629e<\/li>\n<\/ul>\n\n\n\n<ol class=\"wp-block-list\">\n<li>CMakeSettings.json\u306e\u57fa\u672c\u8a2d\u5b9a<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">   {\n     \"configurations\": [\n       {\n         \"name\": \"x64-Debug\",\n         \"generator\": \"Ninja\",\n         \"buildRoot\": \"${projectDir}\\\\build\\\\${name}\",\n         \"installRoot\": \"${projectDir}\\\\install\\\\${name}\",\n         \"cmakeCommandArgs\": \"\",\n         \"buildCommandArgs\": \"\",\n         \"ctestCommandArgs\": \"\"\n       }\n     ]\n   }<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-12\">\u30c8\u30e9\u30d6\u30eb\u30b7\u30e5\u30fc\u30c6\u30a3\u30f3\u30b0\uff1a\u3088\u304f\u3042\u308b\u74b0\u5883\u69cb\u7bc9\u306e\u554f\u984c\u3068\u89e3\u6c7a\u7b56<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u30d1\u30b9\u306e\u554f\u984c<\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u75c7\u72b6: \u2018cmake\u2019 \u306f\u5185\u90e8\u30b3\u30de\u30f3\u30c9\u307e\u305f\u306f\u5916\u90e8\u30b3\u30de\u30f3\u30c9\u3068\u3057\u3066\u8a8d\u8b58\u3055\u308c\u3066\u3044\u307e\u305b\u3093<\/li>\n\n\n\n<li>\u89e3\u6c7a\u7b56: <code># Windows\u306e\u5834\u5408\u3001\u30b7\u30b9\u30c6\u30e0\u74b0\u5883\u5909\u6570\u306b\u4ee5\u4e0b\u3092\u8ffd\u52a0 C:\\Program Files\\CMake\\bin # Unix\u7cfb\u306e\u5834\u5408 export PATH=$PATH:\/usr\/local\/bin<\/code><\/li>\n<\/ul>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u30b3\u30f3\u30d1\u30a4\u30e9\u691c\u51fa\u306e\u554f\u984c<\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u75c7\u72b6: \u30b3\u30f3\u30d1\u30a4\u30e9\u304c\u898b\u3064\u304b\u3089\u306a\u3044\u30a8\u30e9\u30fc<\/li>\n\n\n\n<li>\u89e3\u6c7a\u7b56:<br><code>cmake # CMakeLists.txt\u3067\u30b3\u30f3\u30d1\u30a4\u30e9\u3092\u660e\u793a\u7684\u306b\u6307\u5b9a set(CMAKE_C_COMPILER \"\/usr\/bin\/gcc\") set(CMAKE_CXX_COMPILER \"\/usr\/bin\/g++\")<\/code><\/li>\n<\/ul>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u30d3\u30eb\u30c9\u30b7\u30b9\u30c6\u30e0\u751f\u6210\u306e\u5931\u6557<\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u75c7\u72b6: \u30b8\u30a7\u30cd\u30ec\u30fc\u30bf\u304c\u898b\u3064\u304b\u3089\u306a\u3044\u30a8\u30e9\u30fc<\/li>\n\n\n\n<li>\u89e3\u6c7a\u7b56: <code># \u5229\u7528\u53ef\u80fd\u306a\u30b8\u30a7\u30cd\u30ec\u30fc\u30bf\u306e\u78ba\u8a8d cmake --help # \u660e\u793a\u7684\u306b\u30b8\u30a7\u30cd\u30ec\u30fc\u30bf\u3092\u6307\u5b9a cmake -G \"Visual Studio 16 2019\" ..<\/code><\/li>\n<\/ul>\n\n\n\n<p>\u3053\u308c\u3089\u306e\u8a2d\u5b9a\u3068\u89e3\u6c7a\u7b56\u3092\u9069\u5207\u306b\u5b9f\u65bd\u3059\u308b\u3053\u3068\u3067\u3001\u30b9\u30e0\u30fc\u30ba\u306aCMake\u958b\u767a\u74b0\u5883\u306e\u69cb\u7bc9\u304c\u53ef\u80fd\u3068\u306a\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-13\">CMake\u306e\u57fa\u672c\u7684\u306a\u4f7f\u3044\u65b9\u3092\u7406\u89e3\u3057\u3088\u3046<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-14\">CMakeLists.txt\u306e\u57fa\u672c\u69cb\u6587\u3068\u91cd\u8981\u306a\u30b3\u30de\u30f3\u30c9<\/h3>\n\n\n\n<p>CMakeLists.txt\u306f\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u30d3\u30eb\u30c9\u8a2d\u5b9a\u3092\u5b9a\u7fa9\u3059\u308b\u6838\u3068\u306a\u308b\u30d5\u30a1\u30a4\u30eb\u3067\u3059\u3002\u4ee5\u4e0b\u306b\u4e3b\u8981\u306a\u547d\u4ee4\u3068\u4f7f\u7528\u4f8b\u3092\u793a\u3057\u307e\u3059\uff1a<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u57fa\u672c\u8a2d\u5b9a<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># \u6700\u5c0f\u9650\u5fc5\u8981\u306aCMake\u306e\u30d0\u30fc\u30b8\u30e7\u30f3\u3092\u6307\u5b9a\ncmake_minimum_required(VERSION 3.10)\n\n# \u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u540d\u3068\u4f7f\u7528\u3059\u308b\u8a00\u8a9e\u3092\u8a2d\u5b9a\nproject(MyProject VERSION 1.0 LANGUAGES CXX)\n\n# C++\u6a19\u6e96\u306e\u6307\u5b9a\nset(CMAKE_CXX_STANDARD 17)\nset(CMAKE_CXX_STANDARD_REQUIRED ON)<\/pre>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li>\u5b9f\u884c\u30d5\u30a1\u30a4\u30eb\u3068\u30e9\u30a4\u30d6\u30e9\u30ea\u306e\u4f5c\u6210<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># \u5b9f\u884c\u30d5\u30a1\u30a4\u30eb\u306e\u4f5c\u6210\nadd_executable(my_app src\/main.cpp src\/utils.cpp)\n\n# \u9759\u7684\u30e9\u30a4\u30d6\u30e9\u30ea\u306e\u4f5c\u6210\nadd_library(my_lib STATIC src\/lib.cpp)\n\n# \u52d5\u7684\u30e9\u30a4\u30d6\u30e9\u30ea\u306e\u4f5c\u6210\nadd_library(my_shared_lib SHARED src\/shared.cpp)<\/pre>\n\n\n\n<ol start=\"3\" class=\"wp-block-list\">\n<li>\u30a4\u30f3\u30af\u30eb\u30fc\u30c9\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u3068\u30e9\u30a4\u30d6\u30e9\u30ea\u306e\u30ea\u30f3\u30af<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># \u30a4\u30f3\u30af\u30eb\u30fc\u30c9\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306e\u8ffd\u52a0\ntarget_include_directories(my_app \n    PRIVATE \n        ${PROJECT_SOURCE_DIR}\/include\n        ${PROJECT_BINARY_DIR}\n)\n\n# \u30e9\u30a4\u30d6\u30e9\u30ea\u306e\u30ea\u30f3\u30af\ntarget_link_libraries(my_app \n    PRIVATE \n        my_lib \n        my_shared_lib\n)<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-15\">\u30b7\u30f3\u30d7\u30eb\u306a\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u30d3\u30eb\u30c9\u65b9\u6cd5<\/h3>\n\n\n\n<p>\u5178\u578b\u7684\u306a\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u69cb\u9020\u3068\u30d3\u30eb\u30c9\u624b\u9806\u3092\u793a\u3057\u307e\u3059\uff1a<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u69cb\u9020<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">my_project\/\n\u251c\u2500\u2500 CMakeLists.txt\n\u251c\u2500\u2500 include\/\n\u2502   \u2514\u2500\u2500 hello.hpp\n\u251c\u2500\u2500 src\/\n\u2502   \u251c\u2500\u2500 hello.cpp\n\u2502   \u2514\u2500\u2500 main.cpp\n\u2514\u2500\u2500 build\/<\/pre>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li>CMakeLists.txt\u306e\u5185\u5bb9<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">cmake_minimum_required(VERSION 3.10)\nproject(HelloWorld VERSION 1.0)\n\n# \u30bd\u30fc\u30b9\u30d5\u30a1\u30a4\u30eb\u306e\u53ce\u96c6\nfile(GLOB SOURCES \"src\/*.cpp\")\n\n# \u5b9f\u884c\u30d5\u30a1\u30a4\u30eb\u306e\u4f5c\u6210\nadd_executable(${PROJECT_NAME} ${SOURCES})\n\n# \u30a4\u30f3\u30af\u30eb\u30fc\u30c9\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306e\u8a2d\u5b9a\ntarget_include_directories(${PROJECT_NAME} \n    PRIVATE \n        ${PROJECT_SOURCE_DIR}\/include\n)<\/pre>\n\n\n\n<ol start=\"3\" class=\"wp-block-list\">\n<li>\u30d3\u30eb\u30c9\u30b3\u30de\u30f3\u30c9<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># \u30d3\u30eb\u30c9\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306e\u4f5c\u6210\u3068\u79fb\u52d5\nmkdir build &amp;&amp; cd build\n\n# CMake\u306e\u5b9f\u884c\ncmake ..\n\n# \u30d3\u30eb\u30c9\u306e\u5b9f\u884c\ncmake --build .\n\n# \u7279\u5b9a\u306e\u69cb\u6210\u3067\u30d3\u30eb\u30c9\uff08Windows\u306e\u5834\u5408\uff09\ncmake --build . --config Release<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-16\">\u5909\u6570\u3068\u30ad\u30e3\u30c3\u30b7\u30e5\u306e\u4f7f\u3044\u65b9<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u5909\u6570\u306e\u57fa\u672c\u64cd\u4f5c<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># \u5909\u6570\u306e\u8a2d\u5b9a\nset(MY_VARIABLE \"value\")\n\n# \u30ea\u30b9\u30c8\u5909\u6570\u306e\u8a2d\u5b9a\nset(SOURCE_FILES\n    src\/main.cpp\n    src\/utils.cpp\n    src\/helper.cpp\n)\n\n# \u5909\u6570\u306e\u53c2\u7167\nmessage(\"Value is: ${MY_VARIABLE}\")\n\n# \u6761\u4ef6\u5206\u5c90\u3067\u306e\u4f7f\u7528\nif(MY_VARIABLE STREQUAL \"value\")\n    message(\"Variable matches\")\nendif()<\/pre>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li>\u30ad\u30e3\u30c3\u30b7\u30e5\u5909\u6570\u306e\u4f7f\u7528<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># \u30ad\u30e3\u30c3\u30b7\u30e5\u5909\u6570\u306e\u8a2d\u5b9a\uff08GUI\u8868\u793a\u7528\uff09\nset(USE_FEATURE ON CACHE BOOL \"Enable special feature\")\n\n# \u578b\u4ed8\u304d\u30ad\u30e3\u30c3\u30b7\u30e5\u5909\u6570\nset(BUILD_TYPE \"Release\" CACHE STRING \"Build type\")\nset_property(CACHE BUILD_TYPE PROPERTY STRINGS \"Debug\" \"Release\" \"MinSizeRel\" \"RelWithDebInfo\")\n\n# \u30d1\u30b9\u306e\u30ad\u30e3\u30c3\u30b7\u30e5\nset(LIBRARY_PATH \"\" CACHE PATH \"Path to external library\")\n\n# \u30ad\u30e3\u30c3\u30b7\u30e5\u5909\u6570\u306e\u5f37\u5236\u66f4\u65b0\nset(MY_CACHED_VAR \"new value\" CACHE STRING \"Description\" FORCE)<\/pre>\n\n\n\n<ol start=\"3\" class=\"wp-block-list\">\n<li>\u74b0\u5883\u5909\u6570\u306e\u64cd\u4f5c<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># \u74b0\u5883\u5909\u6570\u306e\u8a2d\u5b9a\nset(ENV{PATH} \"$ENV{PATH}:\/new\/path\")\n\n# \u74b0\u5883\u5909\u6570\u306e\u8aad\u307f\u53d6\u308a\nmessage(\"Path is: $ENV{PATH}\")<\/pre>\n\n\n\n<ol start=\"4\" class=\"wp-block-list\">\n<li>\u30d7\u30ea\u30bb\u30c3\u30c8\u5909\u6570\u306e\u6d3b\u7528<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># \u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u95a2\u9023\u306e\u5909\u6570\nmessage(\"Project source dir: ${PROJECT_SOURCE_DIR}\")\nmessage(\"Project binary dir: ${PROJECT_BINARY_DIR}\")\nmessage(\"Project name: ${PROJECT_NAME}\")\n\n# \u30b7\u30b9\u30c6\u30e0\u60c5\u5831\u306e\u5909\u6570\nmessage(\"Operating system: ${CMAKE_SYSTEM_NAME}\")\nmessage(\"CPU architecture: ${CMAKE_SYSTEM_PROCESSOR}\")\nmessage(\"C++ compiler: ${CMAKE_CXX_COMPILER}\")<\/pre>\n\n\n\n<p>\u3053\u308c\u3089\u306e\u57fa\u672c\u7684\u306a\u4f7f\u3044\u65b9\u3092\u7406\u89e3\u3059\u308b\u3053\u3068\u3067\u3001CMake\u3092\u4f7f\u3063\u305f\u52b9\u7387\u7684\u306a\u30d3\u30eb\u30c9\u30b7\u30b9\u30c6\u30e0\u306e\u69cb\u7bc9\u304c\u53ef\u80fd\u306b\u306a\u308a\u307e\u3059\u3002\u5909\u6570\u3068\u30ad\u30e3\u30c3\u30b7\u30e5\u3092\u9069\u5207\u306b\u6d3b\u7528\u3059\u308b\u3053\u3068\u3067\u3001\u67d4\u8edf\u3067\u7ba1\u7406\u3057\u3084\u3059\u3044\u30d3\u30eb\u30c9\u8a2d\u5b9a\u3092\u5b9f\u73fe\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-17\">\u5b9f\u8df5\u7684\u306aCMake\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u4f5c\u6210\u624b\u9806<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-18\">\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u69cb\u9020\u3068CMakeLists.txt\u306e\u914d\u7f6e<\/h3>\n\n\n\n<p>\u5b9f\u8df5\u7684\u306a\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3067\u306f\u3001\u4ee5\u4e0b\u306e\u3088\u3046\u306a\u968e\u5c64\u7684\u306a\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u69cb\u9020\u3092\u63a1\u7528\u3059\u308b\u3053\u3068\u304c\u63a8\u5968\u3055\u308c\u307e\u3059\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">my_project\/\n\u251c\u2500\u2500 CMakeLists.txt\n\u251c\u2500\u2500 cmake\/\n\u2502   \u251c\u2500\u2500 FindExternalLib.cmake\n\u2502   \u2514\u2500\u2500 ProjectConfig.cmake.in\n\u251c\u2500\u2500 include\/\n\u2502   \u2514\u2500\u2500 my_project\/\n\u2502       \u251c\u2500\u2500 core\/\n\u2502       \u2514\u2500\u2500 utils\/\n\u251c\u2500\u2500 src\/\n\u2502   \u251c\u2500\u2500 core\/\n\u2502   \u2502   \u2514\u2500\u2500 CMakeLists.txt\n\u2502   \u2514\u2500\u2500 utils\/\n\u2502       \u2514\u2500\u2500 CMakeLists.txt\n\u251c\u2500\u2500 tests\/\n\u2502   \u2514\u2500\u2500 CMakeLists.txt\n\u2514\u2500\u2500 examples\/\n    \u2514\u2500\u2500 CMakeLists.txt<\/pre>\n\n\n\n<p>\u30eb\u30fc\u30c8\u306eCMakeLists.txt:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">cmake_minimum_required(VERSION 3.10)\nproject(MyProject VERSION 1.0.0)\n\n# \u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u5168\u4f53\u306e\u8a2d\u5b9a\nset(CMAKE_CXX_STANDARD 17)\nset(CMAKE_CXX_STANDARD_REQUIRED ON)\n\n# CMake\u30e2\u30b8\u30e5\u30fc\u30eb\u30d1\u30b9\u306e\u8ffd\u52a0\nlist(APPEND CMAKE_MODULE_PATH \"${CMAKE_CURRENT_SOURCE_DIR}\/cmake\")\n\n# \u30b5\u30d6\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306e\u8ffd\u52a0\nadd_subdirectory(src\/core)\nadd_subdirectory(src\/utils)\nadd_subdirectory(tests)\nadd_subdirectory(examples)\n\n# \u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u8a2d\u5b9a\ninclude(GNUInstallDirs)\ninstall(DIRECTORY include\/\n        DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}\n)<\/pre>\n\n\n\n<p>src\/core\/CMakeLists.txt:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># \u30b3\u30a2\u30e9\u30a4\u30d6\u30e9\u30ea\u306e\u8a2d\u5b9a\nadd_library(${PROJECT_NAME}_core\n    core_module.cpp\n    core_utils.cpp\n)\n\ntarget_include_directories(${PROJECT_NAME}_core\n    PUBLIC\n        $&lt;BUILD_INTERFACE:${PROJECT_SOURCE_DIR}\/include&gt;\n        $&lt;INSTALL_INTERFACE:include&gt;\n)<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-19\">\u5916\u90e8\u30e9\u30a4\u30d6\u30e9\u30ea\u306e\u8ffd\u52a0\u3068\u4f9d\u5b58\u95a2\u4fc2\u306e\u7ba1\u7406<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>find_package\u3092\u4f7f\u7528\u3057\u305f\u5916\u90e8\u30e9\u30a4\u30d6\u30e9\u30ea\u306e\u691c\u51fa<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># Boost libraries\nfind_package(Boost 1.65 REQUIRED COMPONENTS system filesystem)\n\n# OpenCV\nfind_package(OpenCV REQUIRED)\n\n# \u30ab\u30b9\u30bf\u30e0Find Module\nfind_package(ExternalLib REQUIRED)\n\n# \u4f9d\u5b58\u95a2\u4fc2\u306e\u8a2d\u5b9a\ntarget_link_libraries(${PROJECT_NAME}_core\n    PUBLIC\n        Boost::system\n        Boost::filesystem\n    PRIVATE\n        OpenCV::OpenCV\n        ExternalLib::ExternalLib\n)<\/pre>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li>FetchContent\u3092\u4f7f\u7528\u3057\u305f\u5916\u90e8\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u53d6\u5f97<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">include(FetchContent)\n\nFetchContent_Declare(\n    googletest\n    GIT_REPOSITORY https:\/\/github.com\/google\/googletest.git\n    GIT_TAG        release-1.12.1\n)\n\nFetchContent_MakeAvailable(googletest)\n\n# \u30c6\u30b9\u30c8\u306e\u4f9d\u5b58\u95a2\u4fc2\u8a2d\u5b9a\ntarget_link_libraries(${PROJECT_NAME}_tests\n    PRIVATE\n        GTest::gtest_main\n)<\/pre>\n\n\n\n<ol start=\"3\" class=\"wp-block-list\">\n<li>ExternalProject\u3092\u4f7f\u7528\u3057\u305f\u9ad8\u5ea6\u306a\u4f9d\u5b58\u95a2\u4fc2\u7ba1\u7406<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">include(ExternalProject)\n\nExternalProject_Add(custom_lib\n    GIT_REPOSITORY https:\/\/github.com\/example\/custom_lib.git\n    GIT_TAG        v1.0.0\n    CMAKE_ARGS     -DCMAKE_INSTALL_PREFIX=&lt;INSTALL_DIR&gt;\n                   -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}\n)\n\n# \u4f9d\u5b58\u95a2\u4fc2\u306e\u8ffd\u52a0\nadd_dependencies(${PROJECT_NAME}_core custom_lib)<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-20\">\u30d3\u30eb\u30c9\u8a2d\u5b9a\u306e\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u3068\u30aa\u30d7\u30b7\u30e7\u30f3\u306e\u8ffd\u52a0<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u30d3\u30eb\u30c9\u30aa\u30d7\u30b7\u30e7\u30f3\u306e\u5b9a\u7fa9<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># \u30d3\u30eb\u30c9\u30aa\u30d7\u30b7\u30e7\u30f3\u306e\u8a2d\u5b9a\noption(BUILD_TESTING \"Build tests\" ON)\noption(BUILD_EXAMPLES \"Build examples\" OFF)\noption(USE_STATIC_LIBS \"Use static libraries\" OFF)\n\n# \u6761\u4ef6\u4ed8\u304d\u30d3\u30eb\u30c9\nif(BUILD_TESTING)\n    enable_testing()\n    add_subdirectory(tests)\nendif()\n\nif(BUILD_EXAMPLES)\n    add_subdirectory(examples)\nendif()<\/pre>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li>\u30b3\u30f3\u30d1\u30a4\u30eb\u30d5\u30e9\u30b0\u3068Definitions\u306e\u8a2d\u5b9a<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># \u30b3\u30f3\u30d1\u30a4\u30e9\u30d5\u30e9\u30b0\u306e\u8a2d\u5b9a\nif(MSVC)\n    target_compile_options(${PROJECT_NAME}_core\n        PRIVATE\n            \/W4\n            \/WX\n    )\nelse()\n    target_compile_options(${PROJECT_NAME}_core\n        PRIVATE\n            -Wall\n            -Wextra\n            -Werror\n    )\nendif()\n\n# \u30d7\u30ea\u30d7\u30ed\u30bb\u30c3\u30b5\u5b9a\u7fa9\ntarget_compile_definitions(${PROJECT_NAME}_core\n    PUBLIC\n        $&lt;$&lt;CONFIG:Debug&gt;:DEBUG_MODE&gt;\n        PROJECT_VERSION=\"${PROJECT_VERSION}\"\n    PRIVATE\n        INTERNAL_FEATURE=$&lt;BOOL:${USE_INTERNAL_FEATURE}&gt;\n)<\/pre>\n\n\n\n<ol start=\"3\" class=\"wp-block-list\">\n<li>\u30ab\u30b9\u30bf\u30e0\u30bf\u30fc\u30b2\u30c3\u30c8\u3068\u30b3\u30de\u30f3\u30c9\u306e\u8ffd\u52a0<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># \u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u751f\u6210\u30bf\u30fc\u30b2\u30c3\u30c8\nfind_package(Doxygen)\nif(DOXYGEN_FOUND)\n    set(DOXYGEN_IN ${CMAKE_CURRENT_SOURCE_DIR}\/docs\/Doxyfile.in)\n    set(DOXYGEN_OUT ${CMAKE_CURRENT_BINARY_DIR}\/Doxyfile)\n\n    configure_file(${DOXYGEN_IN} ${DOXYGEN_OUT} @ONLY)\n\n    add_custom_target(docs\n        COMMAND ${DOXYGEN_EXECUTABLE} ${DOXYGEN_OUT}\n        WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}\n        COMMENT \"Generating API documentation with Doxygen\"\n        VERBATIM\n    )\nendif()<\/pre>\n\n\n\n<p>\u3053\u308c\u3089\u306e\u8a2d\u5b9a\u306b\u3088\u308a\u3001\u30e1\u30f3\u30c6\u30ca\u30f3\u30b9\u6027\u304c\u9ad8\u304f\u3001\u67d4\u8edf\u306a\u30d3\u30eb\u30c9\u30b7\u30b9\u30c6\u30e0\u3092\u69cb\u7bc9\u3067\u304d\u307e\u3059\u3002\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u898f\u6a21\u3084\u8981\u4ef6\u306b\u5fdc\u3058\u3066\u3001\u9069\u5207\u306a\u6a5f\u80fd\u3092\u9078\u629e\u3057\u3066\u5b9f\u88c5\u3059\u308b\u3053\u3068\u304c\u91cd\u8981\u3067\u3059\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-21\">CMake\u306e\u9ad8\u5ea6\u306a\u4f7f\u3044\u65b9\u3068\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-22\">\u30e2\u30b8\u30e5\u30fc\u30eb\u5316\u3068\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u5206\u5272\u306e\u65b9\u6cd5<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u30e2\u30b8\u30e5\u30fc\u30eb\u306e\u4f5c\u6210\u3068\u4f7f\u7528<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># cmake\/MyCustomModule.cmake\nfunction(add_custom_library name)\n    add_library(${name} STATIC)\n    target_compile_features(${name} PUBLIC cxx_std_17)\n    target_include_directories(${name}\n        PUBLIC\n            $&lt;BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}\/include&gt;\n            $&lt;INSTALL_INTERFACE:include&gt;\n    )\nendfunction()\n\n# \u4f7f\u7528\u4f8b\ninclude(MyCustomModule)\nadd_custom_library(my_library)<\/pre>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li>\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u30d9\u30fc\u30b9\u306e\u69cb\u9020<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># components\/database\/CMakeLists.txt\nadd_library(database STATIC\n    src\/connection.cpp\n    src\/query.cpp\n)\n\n# components\/network\/CMakeLists.txt\nadd_library(network STATIC\n    src\/socket.cpp\n    src\/protocol.cpp\n)\n\n# \u30e1\u30a4\u30f3\u306eCMakeLists.txt\nadd_subdirectory(components\/database)\nadd_subdirectory(components\/network)\n\n# \u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u306e\u7d50\u5408\nadd_executable(main_app main.cpp)\ntarget_link_libraries(main_app\n    PRIVATE\n        database\n        network\n)<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-23\">\u30af\u30ed\u30b9\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u5bfe\u5fdc\u306e\u30c6\u30af\u30cb\u30c3\u30af<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u56fa\u6709\u306e\u8a2d\u5b9a<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># \u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u691c\u51fa\u3068\u8a2d\u5b9a\nif(WIN32)\n    target_compile_definitions(${PROJECT_NAME}\n        PRIVATE\n            WINDOWS\n            _WIN32_WINNT=0x0601  # Windows 7\u4ee5\u964d\n    )\n    target_link_libraries(${PROJECT_NAME}\n        PRIVATE\n            ws2_32\n            winmm\n    )\nelseif(APPLE)\n    target_compile_definitions(${PROJECT_NAME}\n        PRIVATE\n            MACOS\n            TARGET_OS_MAC\n    )\n    find_library(CORE_FOUNDATION CoreFoundation)\n    target_link_libraries(${PROJECT_NAME}\n        PRIVATE\n            ${CORE_FOUNDATION}\n    )\nelseif(UNIX)\n    target_compile_definitions(${PROJECT_NAME}\n        PRIVATE\n            LINUX\n    )\n    target_link_libraries(${PROJECT_NAME}\n        PRIVATE\n            pthread\n            dl\n    )\nendif()<\/pre>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li>\u30af\u30ed\u30b9\u30b3\u30f3\u30d1\u30a4\u30eb\u8a2d\u5b9a<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># toolchain-android.cmake\nset(CMAKE_SYSTEM_NAME Android)\nset(CMAKE_SYSTEM_VERSION 21)  # Android API level\nset(CMAKE_ANDROID_ARCH_ABI arm64-v8a)\nset(CMAKE_ANDROID_NDK ${ANDROID_NDK})\nset(CMAKE_ANDROID_STL_TYPE c++_shared)\n\n# \u4f7f\u7528\u4f8b\n# cmake -DCMAKE_TOOLCHAIN_FILE=toolchain-android.cmake ..<\/pre>\n\n\n\n<ol start=\"3\" class=\"wp-block-list\">\n<li>\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u4f9d\u5b58\u306e\u30d5\u30a1\u30a4\u30eb\u7ba1\u7406<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># \u30bd\u30fc\u30b9\u30d5\u30a1\u30a4\u30eb\u306e\u6761\u4ef6\u4ed8\u304d\u8ffd\u52a0\nset(COMMON_SOURCES\n    src\/core.cpp\n    src\/utils.cpp\n)\n\nif(WIN32)\n    list(APPEND PLATFORM_SOURCES\n        src\/windows\/win_specific.cpp\n    )\nelseif(APPLE)\n    list(APPEND PLATFORM_SOURCES\n        src\/macos\/mac_specific.mm\n    )\nelse()\n    list(APPEND PLATFORM_SOURCES\n        src\/linux\/linux_specific.cpp\n    )\nendif()\n\nadd_library(${PROJECT_NAME} \n    ${COMMON_SOURCES}\n    ${PLATFORM_SOURCES}\n)<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-24\">CI\/CD\u30d1\u30a4\u30d7\u30e9\u30a4\u30f3\u3067\u306e\u6d3b\u7528\u65b9\u6cd5<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>GitHub Actions\u3067\u306e\u8a2d\u5b9a\u4f8b<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># .github\/workflows\/build.yml\nname: Build and Test\n\non:\n  push:\n    branches: [ main ]\n  pull_request:\n    branches: [ main ]\n\njobs:\n  build:\n    runs-on: ${{ matrix.os }}\n    strategy:\n      matrix:\n        os: [ubuntu-latest, windows-latest, macos-latest]\n        build_type: [Debug, Release]\n\n    steps:\n    - uses: actions\/checkout@v2\n\n    - name: Configure CMake\n      run: |\n        cmake -B ${{github.workspace}}\/build \\\n              -DCMAKE_BUILD_TYPE=${{matrix.build_type}} \\\n              -DBUILD_TESTING=ON\n\n    - name: Build\n      run: cmake --build ${{github.workspace}}\/build --config ${{matrix.build_type}}\n\n    - name: Test\n      working-directory: ${{github.workspace}}\/build\n      run: ctest -C ${{matrix.build_type}} --output-on-failure<\/pre>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li>\u30de\u30eb\u30c1\u69cb\u6210\u30d3\u30eb\u30c9\u306e\u8a2d\u5b9a<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># CMakePresets.json\n{\n  \"version\": 3,\n  \"configurePresets\": [\n    {\n      \"name\": \"default\",\n      \"binaryDir\": \"${sourceDir}\/build\",\n      \"cacheVariables\": {\n        \"CMAKE_BUILD_TYPE\": \"Release\"\n      }\n    },\n    {\n      \"name\": \"debug\",\n      \"inherits\": \"default\",\n      \"cacheVariables\": {\n        \"CMAKE_BUILD_TYPE\": \"Debug\"\n      }\n    }\n  ],\n  \"buildPresets\": [\n    {\n      \"name\": \"default\",\n      \"configurePreset\": \"default\"\n    },\n    {\n      \"name\": \"debug\",\n      \"configurePreset\": \"debug\"\n    }\n  ]\n}<\/pre>\n\n\n\n<ol start=\"3\" class=\"wp-block-list\">\n<li>\u30d1\u30c3\u30b1\u30fc\u30b8\u30f3\u30b0\u8a2d\u5b9a<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># \u30d1\u30c3\u30b1\u30fc\u30b8\u30f3\u30b0\u8a2d\u5b9a\ninclude(CPack)\nset(CPACK_PACKAGE_NAME \"${PROJECT_NAME}\")\nset(CPACK_PACKAGE_VERSION \"${PROJECT_VERSION}\")\nset(CPACK_PACKAGE_DESCRIPTION_SUMMARY \"My Awesome Project\")\nset(CPACK_PACKAGE_VENDOR \"My Company\")\n\nif(WIN32)\n    set(CPACK_GENERATOR \"NSIS\")\n    set(CPACK_NSIS_INSTALL_ROOT \"$PROGRAMFILES64\")\nelseif(APPLE)\n    set(CPACK_GENERATOR \"DragNDrop\")\nelse()\n    set(CPACK_GENERATOR \"DEB\")\n    set(CPACK_DEBIAN_PACKAGE_MAINTAINER \"maintainer@example.com\")\nendif()<\/pre>\n\n\n\n<p>\u3053\u308c\u3089\u306e\u9ad8\u5ea6\u306a\u4f7f\u3044\u65b9\u3068\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9\u3092\u9069\u5207\u306b\u7d44\u307f\u5408\u308f\u305b\u308b\u3053\u3068\u3067\u3001\u52b9\u7387\u7684\u3067\u4fdd\u5b88\u6027\u306e\u9ad8\u3044\u30d3\u30eb\u30c9\u30b7\u30b9\u30c6\u30e0\u3092\u69cb\u7bc9\u3067\u304d\u307e\u3059\u3002\u7279\u306b\u3001\u5927\u898f\u6a21\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3084\u8907\u6570\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u5bfe\u5fdc\u304c\u5fc5\u8981\u306a\u5834\u5408\u306b\u3001\u3053\u308c\u3089\u306e\u6280\u8853\u306f\u975e\u5e38\u306b\u6709\u7528\u3067\u3059\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-25\">\u30c8\u30e9\u30d6\u30eb\u30b7\u30e5\u30fc\u30c6\u30a3\u30f3\u30b0\u3068\u30c7\u30d0\u30c3\u30b0\u30c6\u30af\u30cb\u30c3\u30af<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-26\">CMake\u306e\u30c7\u30d0\u30c3\u30b0\u30ed\u30b0\u306e\u898b\u65b9\u3068\u6d3b\u7528\u65b9\u6cd5<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u30ed\u30b0\u30ec\u30d9\u30eb\u306e\u8a2d\u5b9a\u3068\u51fa\u529b<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># \u8a73\u7d30\u306a\u30ed\u30b0\u51fa\u529b\u306e\u6709\u52b9\u5316\nset(CMAKE_VERBOSE_MAKEFILE ON)\n\n# \u30c7\u30d0\u30c3\u30b0\u60c5\u5831\u306e\u51fa\u529b\nmessage(STATUS \"Debug info: ${VARIABLE}\")\nmessage(WARNING \"Warning message\")\nmessage(FATAL_ERROR \"Critical error\")\n\n# \u5909\u6570\u306e\u5185\u5bb9\u78ba\u8a8d\nget_cmake_property(_variableNames VARIABLES)\nforeach(_variableName ${_variableNames})\n    message(STATUS \"${_variableName}=${${_variableName}}\")\nendforeach()<\/pre>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li>CMake\u306e\u30c7\u30d0\u30c3\u30b0\u30b3\u30de\u30f3\u30c9<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># --debug-output \u30aa\u30d7\u30b7\u30e7\u30f3\u306e\u4f7f\u7528\ncmake --debug-output ..\n\n# --trace \u30aa\u30d7\u30b7\u30e7\u30f3\u3067\u306e\u8a73\u7d30\u30c8\u30ec\u30fc\u30b9\ncmake --trace ..\n\n# --trace-expand \u30aa\u30d7\u30b7\u30e7\u30f3\u3067\u5909\u6570\u5c55\u958b\u3082\u8868\u793a\ncmake --trace-expand ..<\/pre>\n\n\n\n<ol start=\"3\" class=\"wp-block-list\">\n<li>\u30d3\u30eb\u30c9\u60c5\u5831\u306e\u78ba\u8a8d<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># \u30bf\u30fc\u30b2\u30c3\u30c8\u306e\u30d7\u30ed\u30d1\u30c6\u30a3\u78ba\u8a8d\nget_target_property(MY_INCLUDES mylib INCLUDE_DIRECTORIES)\nmessage(\"Include dirs: ${MY_INCLUDES}\")\n\n# \u30b3\u30f3\u30d1\u30a4\u30e9\u30d5\u30e9\u30b0\u306e\u78ba\u8a8d\nget_target_property(MY_FLAGS mylib COMPILE_OPTIONS)\nmessage(\"Compile flags: ${MY_FLAGS}\")<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-27\">\u3088\u304f\u3042\u308b\u30a8\u30e9\u30fc\u3068\u305d\u306e\u89e3\u6c7a\u65b9\u6cd5<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u30e9\u30a4\u30d6\u30e9\u30ea\u95a2\u9023\u306e\u30a8\u30e9\u30fc<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># \u30a8\u30e9\u30fc: target_link_libraries called with incorrect number of arguments\n# \u89e3\u6c7a\u7b56: \u30e9\u30a4\u30d6\u30e9\u30ea\u540d\u3092\u6b63\u3057\u304f\u6307\u5b9a\ntarget_link_libraries(${PROJECT_NAME}\n    PRIVATE\n        external_lib  # \u6b63\u3057\u3044\u30e9\u30a4\u30d6\u30e9\u30ea\u540d\u3092\u4f7f\u7528\n)\n\n# \u30a8\u30e9\u30fc: Could NOT find Package (missing: Package_LIBRARY)\n# \u89e3\u6c7a\u7b56: find_package\u306e\u8a2d\u5b9a\u3092\u8a73\u7d30\u5316\nfind_package(Package REQUIRED\n    PATHS ${CUSTOM_PATH}\n    NO_DEFAULT_PATH\n)<\/pre>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li>\u30d1\u30b9\u95a2\u9023\u306e\u30a8\u30e9\u30fc<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># \u30a8\u30e9\u30fc: File not found\n# \u89e3\u6c7a\u7b56: \u30d1\u30b9\u306e\u6b63\u898f\u5316\u3068\u5b58\u5728\u78ba\u8a8d\nget_filename_component(ABS_PATH \"${RELATIVE_PATH}\" ABSOLUTE)\nif(NOT EXISTS \"${ABS_PATH}\")\n    message(FATAL_ERROR \"Path does not exist: ${ABS_PATH}\")\nendif()\n\n# \u30a8\u30e9\u30fc: Invalid source directory\n# \u89e3\u6c7a\u7b56: \u30bd\u30fc\u30b9\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306e\u78ba\u8a8d\nif(NOT IS_DIRECTORY \"${PROJECT_SOURCE_DIR}\/src\")\n    message(FATAL_ERROR \"Source directory not found\")\nendif()<\/pre>\n\n\n\n<ol start=\"3\" class=\"wp-block-list\">\n<li>\u30b3\u30f3\u30d1\u30a4\u30e9\u95a2\u9023\u306e\u30a8\u30e9\u30fc<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># \u30a8\u30e9\u30fc: Compiler not found\n# \u89e3\u6c7a\u7b56: \u30b3\u30f3\u30d1\u30a4\u30e9\u306e\u660e\u793a\u7684\u6307\u5b9a\nset(CMAKE_CXX_COMPILER \"\/usr\/bin\/g++\")\nif(NOT EXISTS \"${CMAKE_CXX_COMPILER}\")\n    message(FATAL_ERROR \"Compiler not found: ${CMAKE_CXX_COMPILER}\")\nendif()\n\n# \u30a8\u30e9\u30fc: Incompatible compiler version\n# \u89e3\u6c7a\u7b56: \u30d0\u30fc\u30b8\u30e7\u30f3\u78ba\u8a8d\u3068\u6761\u4ef6\u5206\u5c90\nif(CMAKE_CXX_COMPILER_ID STREQUAL \"GNU\")\n    if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS \"7.0\")\n        message(FATAL_ERROR \"GCC version must be at least 7.0\")\n    endif()\nendif()<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-28\">\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u6700\u9069\u5316\u306e\u30dd\u30a4\u30f3\u30c8<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u30d3\u30eb\u30c9\u6642\u9593\u306e\u6700\u9069\u5316<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># \u4e26\u5217\u30d3\u30eb\u30c9\u306e\u6709\u52b9\u5316\nset(CMAKE_BUILD_PARALLEL_LEVEL 8)\n\n# \u30d7\u30ea\u30b3\u30f3\u30d1\u30a4\u30eb\u6e08\u307f\u30d8\u30c3\u30c0\u30fc\u306e\u4f7f\u7528\ntarget_precompile_headers(${PROJECT_NAME}\n    PRIVATE\n        &lt;vector&gt;\n        &lt;string&gt;\n        &lt;memory&gt;\n)\n\n# Unity Build\uff08\u30b8\u30e3\u30f3\u30dc\u30d3\u30eb\u30c9\uff09\u306e\u6709\u52b9\u5316\nset(CMAKE_UNITY_BUILD ON)\nset(CMAKE_UNITY_BUILD_BATCH_SIZE 10)<\/pre>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li>\u30ad\u30e3\u30c3\u30b7\u30e5\u306e\u52b9\u7387\u7684\u306a\u5229\u7528<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># \u30ad\u30e3\u30c3\u30b7\u30e5\u306e\u4f7f\u7528\u4f8b\nset(EXPENSIVE_COMPUTATION_RESULT \"result\"\n    CACHE STRING \"Cache expensive computation result\")\nmark_as_advanced(EXPENSIVE_COMPUTATION_RESULT)\n\n# \u30d5\u30a1\u30a4\u30eb\u5909\u66f4\u306e\u691c\u51fa\u6700\u9069\u5316\nset_property(DIRECTORY \n    PROPERTY ADDITIONAL_CLEAN_FILES\n    \"${CMAKE_BINARY_DIR}\/generated_files\"\n)<\/pre>\n\n\n\n<ol start=\"3\" class=\"wp-block-list\">\n<li>\u6761\u4ef6\u4ed8\u304d\u30d3\u30eb\u30c9\u306e\u6700\u9069\u5316<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># \u5fc5\u8981\u306a\u30e2\u30b8\u30e5\u30fc\u30eb\u306e\u307f\u30d3\u30eb\u30c9\noption(BUILD_TESTING \"Build tests\" OFF)\noption(BUILD_DOCUMENTATION \"Build documentation\" OFF)\n\nif(BUILD_TESTING)\n    add_subdirectory(tests)\nendif()\n\n# \u4f9d\u5b58\u95a2\u4fc2\u306e\u6700\u9069\u5316\nif(TARGET external_lib)\n    target_link_libraries(${PROJECT_NAME} \n        PRIVATE external_lib\n    )\nendif()<\/pre>\n\n\n\n<p>\u3053\u308c\u3089\u306e\u30c8\u30e9\u30d6\u30eb\u30b7\u30e5\u30fc\u30c6\u30a3\u30f3\u30b0\u624b\u6cd5\u3068\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u6700\u9069\u5316\u306e\u30c6\u30af\u30cb\u30c3\u30af\u3092\u9069\u5207\u306b\u6d3b\u7528\u3059\u308b\u3053\u3068\u3067\u3001CMake\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u958b\u767a\u52b9\u7387\u3092\u5927\u5e45\u306b\u5411\u4e0a\u3055\u305b\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u7279\u306b\u3001\u5927\u898f\u6a21\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3067\u306f\u3001\u3053\u308c\u3089\u306e\u77e5\u8b58\u304c\u554f\u984c\u89e3\u6c7a\u3068\u6700\u9069\u5316\u306b\u4e0d\u53ef\u6b20\u3067\u3059\u3002<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Warning: Undefined array key &#8220;is_admin&#8221; in \/home\/xs392991\/dexall.co.jp\/public_html\/articles\/wp-content\/themes\/ &#8230; <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[5],"tags":[],"class_list":{"0":"post-1765","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-cpp","7":"nothumb"},"_links":{"self":[{"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=\/wp\/v2\/posts\/1765","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1765"}],"version-history":[{"count":1,"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=\/wp\/v2\/posts\/1765\/revisions"}],"predecessor-version":[{"id":1766,"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=\/wp\/v2\/posts\/1765\/revisions\/1766"}],"wp:attachment":[{"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1765"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1765"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1765"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}