{"id":1601,"date":"2025-03-24T08:50:17","date_gmt":"2025-03-23T23:50:17","guid":{"rendered":"https:\/\/dexall.co.jp\/articles\/?p=1601"},"modified":"2025-03-24T08:50:17","modified_gmt":"2025-03-23T23:50:17","slug":"cmake%e5%ae%8c%e5%85%a8%e3%82%ac%e3%82%a4%e3%83%892024%ef%bc%9a%e7%8f%be%e5%a0%b4%e3%81%a7%e4%bd%bf%e3%81%88%e3%82%8b%e5%ae%9f%e8%b7%b5%e7%9a%84%e3%81%aa%e8%a8%ad%e5%ae%9a%e6%96%b9%e6%b3%95%e3%81%a8","status":"publish","type":"post","link":"https:\/\/dexall.co.jp\/articles\/?p=1601","title":{"rendered":"CMake\u5b8c\u5168\u30ac\u30a4\u30c92024\uff1a\u73fe\u5834\u3067\u4f7f\u3048\u308b\u5b9f\u8df5\u7684\u306a\u8a2d\u5b9a\u65b9\u6cd5\u3068\u904b\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\uff1a\u30e2\u30c0\u30f3C++\u958b\u767a\u306b\u304a\u3051\u308b\u91cd\u8981\u6027<\/a>    <ul class=\"menu_level_1\">      <li class=\"first\">        <a href=\"#i-1\">\u5f93\u6765\u306e\u30d3\u30eb\u30c9\u30b7\u30b9\u30c6\u30e0\u304c\u62b1\u3048\u308b\u8ab2\u984c<\/a>      <\/li>      <li class=\"last\">        <a href=\"#i-2\">CMake\u304c\u89e3\u6c7a\u3059\u308b\u958b\u767a\u73fe\u5834\u306e\u8ab2\u984c<\/a>      <\/li>    <\/ul>  <\/li>  <li>    <a href=\"#i-7\">CMake\u306e\u57fa\u672c\u6982\u5ff5\u3068\u52d5\u4f5c\u539f\u7406<\/a>    <ul class=\"menu_level_1\">      <li class=\"first\">        <a href=\"#i-8\">CMake\u306e\u30d3\u30eb\u30c9\u30d7\u30ed\u30bb\u30b9\u306e\u6d41\u308c<\/a>      <\/li>      <li class=\"last\">        <a href=\"#i-9\">CMakeLists\u30d5\u30a1\u30a4\u30eb\u306e\u5f79\u5272\u3068\u69cb\u9020<\/a>      <\/li>    <\/ul>  <\/li>  <li>    <a href=\"#i-15\">\u74b0\u5883\u69cb\u7bc9\uff1aCMake\u3092\u4f7f\u3044\u59cb\u3081\u308b\u305f\u3081\u306e\u6e96\u5099<\/a>    <ul class=\"menu_level_1\">      <li class=\"first\">        <a href=\"#i-16\">\u5404OS\u5225\u306eCMake\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u624b\u9806<\/a>      <\/li>      <li>        <a href=\"#i-20\">\u5fc5\u8981\u306a\u4f9d\u5b58\u95a2\u4fc2\u3068\u30c4\u30fc\u30eb\u30c1\u30a7\u30fc\u30f3\u306e\u8a2d\u5b9a<\/a>      <\/li>      <li>        <a href=\"#i-24\">\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u521d\u671f\u8a2d\u5b9a<\/a>      <\/li>      <li class=\"last\">        <a href=\"#i-25\">\u30c8\u30e9\u30d6\u30eb\u30b7\u30e5\u30fc\u30c6\u30a3\u30f3\u30b0<\/a>      <\/li>    <\/ul>  <\/li>  <li>    <a href=\"#i-26\">CMake\u306e\u5b9f\u8df5\u7684\u306a\u4f7f\u7528\u65b9\u6cd5<\/a>    <ul class=\"menu_level_1\">      <li class=\"first\">        <a href=\"#i-27\">\u57fa\u672c\u7684\u306a\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u69cb\u6210\u306e\u4f5c\u6210<\/a>      <\/li>      <li>        <a href=\"#i-29\">\u30e9\u30a4\u30d6\u30e9\u30ea\u3068\u306e\u4f9d\u5b58\u95a2\u4fc2\u306e\u7ba1\u7406<\/a>      <\/li>      <li class=\"last\">        <a href=\"#i-32\">\u30af\u30ed\u30b9\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u30d3\u30eb\u30c9\u306e\u8a2d\u5b9a<\/a>      <\/li>    <\/ul>  <\/li>  <li>    <a href=\"#i-36\">CMake\u306e\u9ad8\u5ea6\u306a\u6a5f\u80fd\u6d3b\u7528\u30c6\u30af\u30cb\u30c3\u30af<\/a>    <ul class=\"menu_level_1\">      <li class=\"first\">        <a href=\"#i-37\">\u30ab\u30b9\u30bf\u30e0\u30b3\u30de\u30f3\u30c9\u3068\u30bf\u30fc\u30b2\u30c3\u30c8\u306e\u4f5c\u6210<\/a>      <\/li>      <li>        <a href=\"#i-40\">\u6761\u4ef6\u5206\u5c90\u3068\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u5225\u306e\u8a2d\u5b9a<\/a>      <\/li>      <li class=\"last\">        <a href=\"#i-43\">\u5916\u90e8\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u7d71\u5408\u7ba1\u7406<\/a>      <\/li>    <\/ul>  <\/li>  <li>    <a href=\"#i-47\">CMake\u3092\u4f7f\u7528\u3057\u305f\u30c1\u30fc\u30e0\u958b\u767a\u306e\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9<\/a>    <ul class=\"menu_level_1\">      <li class=\"first\">        <a href=\"#i-48\">\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u69cb\u9020\u306e\u6a19\u6e96\u5316\u3068\u7ba1\u7406<\/a>      <\/li>      <li>        <a href=\"#i-52\">\u5171\u901a\u306e\u8a2d\u5b9a\u3068\u30d3\u30eb\u30c9\u30b9\u30af\u30ea\u30d7\u30c8\u306e\u5171\u6709<\/a>      <\/li>      <li class=\"last\">        <a href=\"#i-56\">CI\u30d1\u30a4\u30d7\u30e9\u30a4\u30f3\u3067\u306eCMake\u306e\u6d3b\u7528\u65b9\u6cd5<\/a>      <\/li>    <\/ul>  <\/li>  <li class=\"last\">    <a href=\"#i-60\">CMake\u306e\u30c8\u30e9\u30d6\u30eb\u30b7\u30e5\u30fc\u30c6\u30a3\u30f3\u30b0\u3068\u30c7\u30d0\u30c3\u30b0<\/a>    <ul class=\"menu_level_1\">      <li class=\"first\">        <a href=\"#i-61\">\u4e00\u822c\u7684\u306a\u30a8\u30e9\u30fc\u3068\u305d\u306e\u89e3\u6c7a\u65b9\u6cd5<\/a>      <\/li>      <li>        <a href=\"#i-65\">\u30d3\u30eb\u30c9\u554f\u984c\u306e\u30c7\u30d0\u30c3\u30b0\u30c6\u30af\u30cb\u30c3\u30af<\/a>      <\/li>      <li class=\"last\">        <a href=\"#i-69\">\u30c8\u30e9\u30d6\u30eb\u30b7\u30e5\u30fc\u30c6\u30a3\u30f3\u30b0\u306e\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9<\/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\uff1a\u30e2\u30c0\u30f3C++\u958b\u767a\u306b\u304a\u3051\u308b\u91cd\u8981\u6027<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-1\">\u5f93\u6765\u306e\u30d3\u30eb\u30c9\u30b7\u30b9\u30c6\u30e0\u304c\u62b1\u3048\u308b\u8ab2\u984c<\/h3>\n\n\n\n<p>C++\u958b\u767a\u306b\u304a\u3044\u3066\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u30d3\u30eb\u30c9\u30b7\u30b9\u30c6\u30e0\u306f\u5e38\u306b\u5927\u304d\u306a\u8ab2\u984c\u3068\u306a\u3063\u3066\u304d\u307e\u3057\u305f\u3002\u5f93\u6765\u306e\u30d3\u30eb\u30c9\u30b7\u30b9\u30c6\u30e0\u306b\u306f\u4ee5\u4e0b\u306e\u3088\u3046\u306a\u554f\u984c\u304c\u3042\u308a\u307e\u3057\u305f\uff1a<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u4f9d\u5b58\u6027\u306e\u554f\u984c<\/strong><\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Windows\uff08Visual Studio\uff09\u3001Linux\uff08Make\uff09\u3001macOS\uff08Xcode\uff09\u3067\u7570\u306a\u308b\u30d3\u30eb\u30c9\u30b7\u30b9\u30c6\u30e0\u304c\u5fc5\u8981<\/li>\n\n\n\n<li>\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u9593\u3067\u306e\u30d3\u30eb\u30c9\u8a2d\u5b9a\u306e\u4e92\u63db\u6027\u304c\u306a\u3044<\/li>\n\n\n\n<li>\u958b\u767a\u8005\u304c\u305d\u308c\u305e\u308c\u306e\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u56fa\u6709\u306e\u77e5\u8b58\u3092\u5fc5\u8981\u3068\u3059\u308b<\/li>\n<\/ul>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u4f9d\u5b58\u95a2\u4fc2\u7ba1\u7406\u306e\u8907\u96d1\u3055<\/strong><\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u30b5\u30fc\u30c9\u30d1\u30fc\u30c6\u30a3\u30e9\u30a4\u30d6\u30e9\u30ea\u306e\u7d71\u5408\u304c\u56f0\u96e3<\/li>\n\n\n\n<li>\u30b7\u30b9\u30c6\u30e0\u9593\u3067\u306e\u4f9d\u5b58\u30d1\u30b9\u306e\u9055\u3044\u3092\u624b\u52d5\u3067\u7ba1\u7406\u3059\u308b\u5fc5\u8981\u6027<\/li>\n\n\n\n<li>\u30d0\u30fc\u30b8\u30e7\u30f3\u7ba1\u7406\u3084\u4e92\u63db\u6027\u306e\u78ba\u8a8d\u304c\u7169\u96d1<\/li>\n<\/ul>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u30e1\u30f3\u30c6\u30ca\u30f3\u30b9\u6027\u306e\u8ab2\u984c<\/strong><\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u30d3\u30eb\u30c9\u30b9\u30af\u30ea\u30d7\u30c8\u306e\u53ef\u8aad\u6027\u304c\u4f4e\u3044<\/li>\n\n\n\n<li>\u8a2d\u5b9a\u306e\u5909\u66f4\u3084\u66f4\u65b0\u304c\u56f0\u96e3<\/li>\n\n\n\n<li>\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u6210\u9577\u306b\u4f34\u3046\u8907\u96d1\u6027\u306e\u5897\u5927<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-2\">CMake\u304c\u89e3\u6c7a\u3059\u308b\u958b\u767a\u73fe\u5834\u306e\u8ab2\u984c<\/h3>\n\n\n\n<p>CMake\u306f\u3001\u3053\u308c\u3089\u306e\u8ab2\u984c\u306b\u5bfe\u3059\u308b\u5305\u62ec\u7684\u306a\u30bd\u30ea\u30e5\u30fc\u30b7\u30e7\u30f3\u3092\u63d0\u4f9b\u3057\u307e\u3059\uff1a<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-3\">1. \u30af\u30ed\u30b9\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u5bfe\u5fdc<\/h4>\n\n\n\n<p>CMake\u306e\u6700\u5927\u306e\u5f37\u307f\u306f\u3001\u5358\u4e00\u306e\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u304b\u3089\u5404\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u7528\u306e\u30cd\u30a4\u30c6\u30a3\u30d6\u30d3\u30eb\u30c9\u30d5\u30a1\u30a4\u30eb\u3092\u751f\u6210\u3067\u304d\u308b\u3053\u3068\u3067\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=\"\"># \u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u306b\u4f9d\u5b58\u3057\u306a\u3044\u8a18\u8ff0\u4f8b\ncmake_minimum_required(VERSION 3.10)\nproject(MyProject)\n\n# \u5b9f\u884c\u30d5\u30a1\u30a4\u30eb\u306e\u751f\u6210\nadd_executable(MyApp main.cpp)<\/pre>\n\n\n\n<p>\u3053\u306e\u30b3\u30fc\u30c9\u306f\u3001\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u5404\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u3067\u9069\u5207\u306a\u30d3\u30eb\u30c9\u30d5\u30a1\u30a4\u30eb\u3092\u751f\u6210\u3057\u307e\u3059\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Windows \u2192 Visual Studio\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u30d5\u30a1\u30a4\u30eb<\/li>\n\n\n\n<li>Linux \u2192 Make\u30d5\u30a1\u30a4\u30eb<\/li>\n\n\n\n<li>macOS \u2192 Xcode\u30d7\u30ed\u30b8\u30a7\u30af\u30c8<\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-4\">2. \u30e2\u30c0\u30f3\u306a\u4f9d\u5b58\u95a2\u4fc2\u7ba1\u7406<\/h4>\n\n\n\n<p>CMake\u306f\u3001\u5916\u90e8\u30e9\u30a4\u30d6\u30e9\u30ea\u306e\u4f9d\u5b58\u95a2\u4fc2\u3092\u52b9\u7387\u7684\u306b\u7ba1\u7406\u3057\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=\"\"># \u5916\u90e8\u30e9\u30a4\u30d6\u30e9\u30ea\u306e\u691c\u7d22\u3068\u7d71\u5408\nfind_package(Boost REQUIRED COMPONENTS system filesystem)\ntarget_link_libraries(MyApp PRIVATE \n    Boost::system \n    Boost::filesystem\n)<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-5\">3. \u67d4\u8edf\u306a\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u69cb\u6210<\/h4>\n\n\n\n<p>\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u69cb\u9020\u3092\u8ad6\u7406\u7684\u306b\u6574\u7406\u3057\u3001\u7ba1\u7406\u3059\u308b\u3053\u3068\u304c\u3067\u304d\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=\"\"># \u30b5\u30d6\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306e\u8ffd\u52a0\nadd_subdirectory(src)\nadd_subdirectory(tests)\n\n# \u30e9\u30a4\u30d6\u30e9\u30ea\u3068\u30c6\u30b9\u30c8\u306e\u95a2\u9023\u4ed8\u3051\nadd_library(MyLib ${SOURCE_FILES})\nadd_executable(MyTests ${TEST_FILES})\ntarget_link_libraries(MyTests PRIVATE MyLib)<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-6\">4. \u30d3\u30eb\u30c9\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u306e\u5bb9\u6613\u3055<\/h4>\n\n\n\n<p>\u958b\u767a\u74b0\u5883\u3084\u8981\u4ef6\u306b\u5fdc\u3058\u3066\u67d4\u8edf\u306b\u30d3\u30eb\u30c9\u8a2d\u5b9a\u3092\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u3067\u304d\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=\"\"># \u6761\u4ef6\u5206\u5c90\u306b\u3088\u308b\u8a2d\u5b9a\nif(UNIX)\n    target_compile_definitions(MyApp PRIVATE UNIX_BUILD)\nelseif(WIN32)\n    target_compile_definitions(MyApp PRIVATE WIN32_BUILD)\nendif()\n\n# \u30b3\u30f3\u30d1\u30a4\u30e9\u30d5\u30e9\u30b0\u306e\u8a2d\u5b9a\ntarget_compile_options(MyApp PRIVATE \n    $&lt;$&lt;CXX_COMPILER_ID:MSVC&gt;:\/W4&gt;\n    $&lt;$&lt;NOT:$&lt;CXX_COMPILER_ID:MSVC&gt;&gt;:-Wall -Wextra&gt;\n)<\/pre>\n\n\n\n<p>CMake\u306e\u63a1\u7528\u306b\u3088\u308a\u3001\u958b\u767a\u30c1\u30fc\u30e0\u306f\u4ee5\u4e0b\u306e\u3088\u3046\u306a\u6069\u6075\u3092\u53d7\u3051\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>\u958b\u767a\u52b9\u7387\u306e\u5411\u4e0a<\/strong><\/li>\n\n\n\n<li>\u7d71\u4e00\u3055\u308c\u305f\u30d3\u30eb\u30c9\u30b7\u30b9\u30c6\u30e0\u306b\u3088\u308b\u5b66\u7fd2\u30b3\u30b9\u30c8\u306e\u524a\u6e1b<\/li>\n\n\n\n<li>\u81ea\u52d5\u5316\u3055\u308c\u305f\u30d3\u30eb\u30c9\u30d7\u30ed\u30bb\u30b9\u306b\u3088\u308b\u4f5c\u696d\u52b9\u7387\u306e\u6539\u5584<\/li>\n\n\n\n<li>\u30af\u30ed\u30b9\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u958b\u767a\u306e\u7c21\u7d20\u5316<\/li>\n\n\n\n<li><strong>\u4fdd\u5b88\u6027\u306e\u5411\u4e0a<\/strong><\/li>\n\n\n\n<li>\u660e\u78ba\u3067\u7406\u89e3\u3057\u3084\u3059\u3044\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u69cb\u9020<\/li>\n\n\n\n<li>\u8a2d\u5b9a\u306e\u4e00\u5143\u7ba1\u7406\u306b\u3088\u308b\u5909\u66f4\u306e\u5bb9\u6613\u3055<\/li>\n\n\n\n<li>\u30d0\u30fc\u30b8\u30e7\u30f3\u7ba1\u7406\u3068\u306e\u89aa\u548c\u6027<\/li>\n\n\n\n<li><strong>\u30c1\u30fc\u30e0\u958b\u767a\u306e\u52b9\u7387\u5316<\/strong><\/li>\n\n\n\n<li>\u7d71\u4e00\u3055\u308c\u305f\u958b\u767a\u74b0\u5883\u306e\u63d0\u4f9b<\/li>\n\n\n\n<li>CI\u30d1\u30a4\u30d7\u30e9\u30a4\u30f3\u3068\u306e\u5bb9\u6613\u306a\u7d71\u5408<\/li>\n\n\n\n<li>\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u62e1\u5f35\u6027\u306e\u78ba\u4fdd<\/li>\n<\/ul>\n\n\n\n<p>\u3053\u306e\u3088\u3046\u306b\u3001CMake\u306f\u73fe\u4ee3\u306eC++\u958b\u767a\u304c\u76f4\u9762\u3059\u308b\u69d8\u3005\u306a\u8ab2\u984c\u306b\u5bfe\u3059\u308b\u52b9\u679c\u7684\u306a\u30bd\u30ea\u30e5\u30fc\u30b7\u30e7\u30f3\u3092\u63d0\u4f9b\u3057\u3001\u958b\u767a\u30d7\u30ed\u30bb\u30b9\u5168\u4f53\u306e\u52b9\u7387\u5316\u3068\u54c1\u8cea\u5411\u4e0a\u306b\u8ca2\u732e\u3057\u3066\u3044\u307e\u3059\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-7\">CMake\u306e\u57fa\u672c\u6982\u5ff5\u3068\u52d5\u4f5c\u539f\u7406<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-8\">CMake\u306e\u30d3\u30eb\u30c9\u30d7\u30ed\u30bb\u30b9\u306e\u6d41\u308c<\/h3>\n\n\n\n<p>CMake\u306e\u30d3\u30eb\u30c9\u30d7\u30ed\u30bb\u30b9\u306f\u3001\u5927\u304d\u304f\u5206\u3051\u30663\u3064\u306e\u30d5\u30a7\u30fc\u30ba\u3067\u69cb\u6210\u3055\u308c\u3066\u3044\u307e\u3059\uff1a<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u8a2d\u5b9a\u30d5\u30a7\u30fc\u30ba\uff08Configure\uff09<\/strong><\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>CMakeLists\u30d5\u30a1\u30a4\u30eb\u306e\u89e3\u6790<\/li>\n\n\n\n<li>\u30b7\u30b9\u30c6\u30e0\u74b0\u5883\u306e\u30c1\u30a7\u30c3\u30af<\/li>\n\n\n\n<li>\u30b3\u30f3\u30d1\u30a4\u30e9\u3068\u30c4\u30fc\u30eb\u30c1\u30a7\u30fc\u30f3\u306e\u691c\u51fa<\/li>\n\n\n\n<li>\u30ad\u30e3\u30c3\u30b7\u30e5\u5909\u6570\u306e\u8a2d\u5b9a<\/li>\n<\/ul>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u751f\u6210\u30d5\u30a7\u30fc\u30ba\uff08Generate\uff09<\/strong><\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u30cd\u30a4\u30c6\u30a3\u30d6\u30d3\u30eb\u30c9\u30b7\u30b9\u30c6\u30e0\u306e\u30d5\u30a1\u30a4\u30eb\u751f\u6210<\/li>\n\n\n\n<li>\u4f9d\u5b58\u95a2\u4fc2\u306e\u89e3\u6c7a<\/li>\n\n\n\n<li>\u30b3\u30f3\u30d1\u30a4\u30eb\u30d5\u30e9\u30b0\u306e\u8a2d\u5b9a<\/li>\n<\/ul>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u30d3\u30eb\u30c9\u30d5\u30a7\u30fc\u30ba\uff08Build\uff09<\/strong><\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u5b9f\u969b\u306e\u30b3\u30f3\u30d1\u30a4\u30eb\u3068\u30ea\u30f3\u30af<\/li>\n\n\n\n<li>\u6210\u679c\u7269\u306e\u751f\u6210<\/li>\n<\/ul>\n\n\n\n<p>\u4ee5\u4e0b\u306f\u3001\u5178\u578b\u7684\u306aCMake\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u30d3\u30eb\u30c9\u30d5\u30ed\u30fc\u3067\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=\"\"># \u30d3\u30eb\u30c9\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306e\u4f5c\u6210\u3068\u79fb\u52d5\nmkdir build &amp;&amp; cd build\n\n# \u8a2d\u5b9a\u3068\u751f\u6210\u30d5\u30a7\u30fc\u30ba\ncmake ..\n\n# \u30d3\u30eb\u30c9\u30d5\u30a7\u30fc\u30ba\ncmake --build .<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-9\">CMakeLists\u30d5\u30a1\u30a4\u30eb\u306e\u5f79\u5272\u3068\u69cb\u9020<\/h3>\n\n\n\n<p>CMakeLists\u30d5\u30a1\u30a4\u30eb\uff08<code>CMakeLists.txt<\/code>\uff09\u306f\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u30d3\u30eb\u30c9\u8a2d\u5b9a\u3092\u8a18\u8ff0\u3059\u308b\u6838\u3068\u306a\u308b\u30d5\u30a1\u30a4\u30eb\u3067\u3059\u3002<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-10\">\u57fa\u672c\u69cb\u9020<\/h4>\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\u30d0\u30fc\u30b8\u30e7\u30f3\u306e\u6307\u5b9a\ncmake_minimum_required(VERSION 3.10)\n\n# \u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u540d\u3068\u4f7f\u7528\u8a00\u8a9e\u306e\u8a2d\u5b9a\nproject(MyProject VERSION 1.0\n    DESCRIPTION \"My awesome C++ project\"\n    LANGUAGES CXX)\n\n# \u30b3\u30f3\u30d1\u30a4\u30e9\u8a2d\u5b9a\nset(CMAKE_CXX_STANDARD 17)\nset(CMAKE_CXX_STANDARD_REQUIRED ON)\n\n# \u30bd\u30fc\u30b9\u30d5\u30a1\u30a4\u30eb\u306e\u53ce\u96c6\nfile(GLOB_RECURSE SOURCES src\/*.cpp)\n\n# \u5b9f\u884c\u30d5\u30a1\u30a4\u30eb\u306e\u8a2d\u5b9a\nadd_executable(${PROJECT_NAME} ${SOURCES})<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-11\">\u91cd\u8981\u306a\u57fa\u672c\u547d\u4ee4<\/h4>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u8a2d\u5b9a\u95a2\u9023<\/strong><\/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\u30bf\u30a4\u30d7\u306e\u8a2d\u5b9a\nset(CMAKE_BUILD_TYPE Release)\n\n# \u51fa\u529b\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306e\u8a2d\u5b9a\nset(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}\/bin)\nset(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}\/lib)<\/pre>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li><strong>\u30bf\u30fc\u30b2\u30c3\u30c8\u7ba1\u7406<\/strong><\/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=\"\"># \u30e9\u30a4\u30d6\u30e9\u30ea\u306e\u4f5c\u6210\nadd_library(MyLib STATIC\n    src\/lib1.cpp\n    src\/lib2.cpp\n)\n\n# \u5b9f\u884c\u30d5\u30a1\u30a4\u30eb\u306e\u4f5c\u6210\u3068\u30ea\u30f3\u30af\nadd_executable(MyApp src\/main.cpp)\ntarget_link_libraries(MyApp PRIVATE MyLib)<\/pre>\n\n\n\n<ol start=\"3\" class=\"wp-block-list\">\n<li><strong>\u30a4\u30f3\u30af\u30eb\u30fc\u30c9\u3068\u30ea\u30f3\u30af\u8a2d\u5b9a<\/strong><\/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(MyLib\n    PUBLIC\n        ${PROJECT_SOURCE_DIR}\/include\n    PRIVATE\n        ${PROJECT_SOURCE_DIR}\/src\n)\n\n# \u30b3\u30f3\u30d1\u30a4\u30eb\u30aa\u30d7\u30b7\u30e7\u30f3\u306e\u8a2d\u5b9a\ntarget_compile_options(MyLib\n    PRIVATE\n        $&lt;$&lt;CXX_COMPILER_ID:MSVC&gt;:\/W4&gt;\n        $&lt;$&lt;NOT:$&lt;CXX_COMPILER_ID:MSVC&gt;&gt;:-Wall -Wextra&gt;\n)<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-12\">\u5909\u6570\u3068\u30ad\u30e3\u30c3\u30b7\u30e5<\/h4>\n\n\n\n<p>CMake\u3067\u306f\u3001\u4ee5\u4e0b\u306e\u3088\u3046\u306a\u5909\u6570\u30b7\u30b9\u30c6\u30e0\u3092\u4f7f\u7528\u3057\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=\"\"># \u901a\u5e38\u306e\u5909\u6570\u8a2d\u5b9a\nset(MY_VARIABLE \"value\")\n\n# \u30ad\u30e3\u30c3\u30b7\u30e5\u5909\u6570\u306e\u8a2d\u5b9a\nset(CACHE_VARIABLE \"default_value\" CACHE STRING \"Description\")\n\n# \u30aa\u30d7\u30b7\u30e7\u30f3\u306e\u8a2d\u5b9a\uff08ON\u307e\u305f\u306fOFF\uff09\noption(BUILD_TESTS \"Build test suite\" ON)<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-13\">\u30b9\u30b3\u30fc\u30d7\u3068\u30e2\u30b8\u30e5\u30fc\u30eb<\/h4>\n\n\n\n<p>CMake\u306f\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u30d9\u30fc\u30b9\u306e\u30b9\u30b3\u30fc\u30d7\u3092\u6301\u3061\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=\"\"># \u30b5\u30d6\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306e\u8ffd\u52a0\nadd_subdirectory(libs)\nadd_subdirectory(apps)\n\n# \u5909\u6570\u306e\u30b9\u30b3\u30fc\u30d7\u5236\u5fa1\nset(GLOBAL_VAR \"value\" PARENT_SCOPE)  # \u89aa\u30b9\u30b3\u30fc\u30d7\u306b\u5909\u6570\u3092\u8a2d\u5b9a<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-14\">\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u968e\u5c64\u306e\u4f8b<\/h4>\n\n\n\n<p>\u5178\u578b\u7684\u306a\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u69cb\u9020\u306f\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u306a\u308a\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=\"\">MyProject\/\n\u251c\u2500\u2500 CMakeLists.txt          # \u30c8\u30c3\u30d7\u30ec\u30d9\u30eb\u306e\u8a2d\u5b9a\n\u251c\u2500\u2500 include\/                # \u30d1\u30d6\u30ea\u30c3\u30af\u30d8\u30c3\u30c0\u30fc\n\u251c\u2500\u2500 src\/                    # \u30bd\u30fc\u30b9\u30d5\u30a1\u30a4\u30eb\n\u2502   \u2514\u2500\u2500 CMakeLists.txt     # \u30bd\u30fc\u30b9\u7528\u306e\u8a2d\u5b9a\n\u251c\u2500\u2500 tests\/                  # \u30c6\u30b9\u30c8\u30d5\u30a1\u30a4\u30eb\n\u2502   \u2514\u2500\u2500 CMakeLists.txt     # \u30c6\u30b9\u30c8\u7528\u306e\u8a2d\u5b9a\n\u2514\u2500\u2500 external\/              # \u5916\u90e8\u4f9d\u5b58\u95a2\u4fc2\n    \u2514\u2500\u2500 CMakeLists.txt     # \u4f9d\u5b58\u95a2\u4fc2\u306e\u8a2d\u5b9a<\/pre>\n\n\n\n<p>\u3053\u306e\u968e\u5c64\u69cb\u9020\u306b\u5bfe\u5fdc\u3059\u308b\u30c8\u30c3\u30d7\u30ec\u30d9\u30eb\u306e<code>CMakeLists.txt<\/code>\u306e\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=\"\">cmake_minimum_required(VERSION 3.10)\nproject(MyProject)\n\n# \u30aa\u30d7\u30b7\u30e7\u30f3\u306e\u8a2d\u5b9a\noption(BUILD_TESTS \"Build tests\" ON)\noption(BUILD_DOCS \"Build documentation\" OFF)\n\n# \u57fa\u672c\u8a2d\u5b9a\nset(CMAKE_CXX_STANDARD 17)\nset(CMAKE_CXX_STANDARD_REQUIRED ON)\n\n# \u30e1\u30a4\u30f3\u306e\u30bd\u30fc\u30b9\u30b3\u30fc\u30c9\u30d3\u30eb\u30c9\nadd_subdirectory(src)\n\n# \u30c6\u30b9\u30c8\u306e\u30d3\u30eb\u30c9\uff08\u30aa\u30d7\u30b7\u30e7\u30f3\uff09\nif(BUILD_TESTS)\n    enable_testing()\n    add_subdirectory(tests)\nendif()\n\n# \u5916\u90e8\u4f9d\u5b58\u95a2\u4fc2\u306e\u8ffd\u52a0\nadd_subdirectory(external)<\/pre>\n\n\n\n<p>\u3053\u306e\u3088\u3046\u306b\u3001CMakeLists\u30d5\u30a1\u30a4\u30eb\u306f\u968e\u5c64\u7684\u306a\u69cb\u9020\u3092\u6301\u3061\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u5168\u4f53\u306e\u30d3\u30eb\u30c9\u8a2d\u5b9a\u3092\u67d4\u8edf\u304b\u3064\u7ba1\u7406\u3057\u3084\u3059\u3044\u5f62\u3067\u8a18\u8ff0\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-15\">\u74b0\u5883\u69cb\u7bc9\uff1aCMake\u3092\u4f7f\u3044\u59cb\u3081\u308b\u305f\u3081\u306e\u6e96\u5099<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-16\">\u5404OS\u5225\u306eCMake\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u624b\u9806<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-17\">Windows\u74b0\u5883\u3067\u306e\u5c0e\u5165<\/h4>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u30a4\u30f3\u30b9\u30c8\u30fc\u30e9\u30fc\u3092\u4f7f\u7528\u3059\u308b\u65b9\u6cd5<\/strong><\/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=\"\">   # 1. \u516c\u5f0f\u30b5\u30a4\u30c8\u304b\u3089\u30a4\u30f3\u30b9\u30c8\u30fc\u30e9\u30fc\u3092\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\n   # https:\/\/cmake.org\/download\/\n\n   # 2. \u30a4\u30f3\u30b9\u30c8\u30fc\u30e9\u30fc\u3092\u5b9f\u884c\n   # 3. \u300cAdd CMake to system PATH\u300d\u30aa\u30d7\u30b7\u30e7\u30f3\u3092\u9078\u629e<\/pre>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li><strong>\u30d1\u30c3\u30b1\u30fc\u30b8\u30de\u30cd\u30fc\u30b8\u30e3\u30fc\uff08chocolatey\uff09\u3092\u4f7f\u7528\u3059\u308b\u65b9\u6cd5<\/strong><\/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=\"\">   # \u7ba1\u7406\u8005\u6a29\u9650\u3067PowerShell\u3092\u958b\u3044\u3066\u5b9f\u884c\n   choco install cmake<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-18\">Linux\u74b0\u5883\u3067\u306e\u5c0e\u5165<\/h4>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Ubuntu\/Debian\u7cfb<\/strong><\/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\u30de\u30cd\u30fc\u30b8\u30e3\u30fc\u3092\u4f7f\u7528\n   sudo apt update\n   sudo apt install cmake\n\n   # \u6700\u65b0\u7248\u304c\u5fc5\u8981\u306a\u5834\u5408\n   sudo apt install cmake-data\n   sudo apt install cmake<\/pre>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li><strong>RHEL\/CentOS\u7cfb<\/strong><\/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=\"\">   # yum\u3092\u4f7f\u7528\n   sudo yum install cmake\n\n   # \u307e\u305f\u306f dnf\u3092\u4f7f\u7528\n   sudo dnf install cmake<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-19\">macOS\u74b0\u5883\u3067\u306e\u5c0e\u5165<\/h4>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Homebrew\u3092\u4f7f\u7528\u3059\u308b\u65b9\u6cd5<\/strong><\/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><strong>MacPorts\u4f7f\u7528\u3059\u308b\u65b9\u6cd5<\/strong><\/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=\"\">   sudo port install cmake<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-20\">\u5fc5\u8981\u306a\u4f9d\u5b58\u95a2\u4fc2\u3068\u30c4\u30fc\u30eb\u30c1\u30a7\u30fc\u30f3\u306e\u8a2d\u5b9a<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-21\">1. \u5fc5\u9808\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8<\/h4>\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=\"\"># Windows\u306e\u5834\u5408\uff1a\n# - Visual Studio Build Tools\n# - Windows SDK\n\n# Linux\u306e\u5834\u5408\uff1a\nsudo apt install build-essential  # Ubuntu\/Debian\nsudo yum groupinstall \"Development Tools\"  # RHEL\/CentOS\n\n# macOS\u306e\u5834\u5408\uff1a\nxcode-select --install  # Command Line Tools<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-22\">2. \u30b3\u30f3\u30d1\u30a4\u30e9\u306e\u8a2d\u5b9a<\/h4>\n\n\n\n<p>CMake\u306f\u4ee5\u4e0b\u306e\u30b3\u30f3\u30d1\u30a4\u30e9\u3092\u81ea\u52d5\u691c\u51fa\u3057\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=\"\"># \u30b3\u30f3\u30d1\u30a4\u30e9\u306e\u660e\u793a\u7684\u306a\u6307\u5b9a\u304c\u5fc5\u8981\u306a\u5834\u5408\nset(CMAKE_C_COMPILER \"\/usr\/bin\/gcc\")\nset(CMAKE_CXX_COMPILER \"\/usr\/bin\/g++\")\n\n# \u307e\u305f\u306f\u74b0\u5883\u5909\u6570\u3067\u6307\u5b9a\n# export CC=\/usr\/bin\/gcc\n# export CXX=\/usr\/bin\/g++<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-23\">3. \u30d3\u30eb\u30c9\u30c4\u30fc\u30eb\u306e\u8a2d\u5b9a<\/h4>\n\n\n\n<p>\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u5225\u306e\u63a8\u5968\u30d3\u30eb\u30c9\u30c4\u30fc\u30eb\uff1a<\/p>\n\n\n<div id=\"id-3231b6d7-4950-4c62-a4e0-23914209da9f\">\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0<\/th><th>\u63a8\u5968\u30d3\u30eb\u30c9\u30c4\u30fc\u30eb<\/th><th>\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u65b9\u6cd5<\/th><\/tr><\/thead><tbody><tr><td>Windows<\/td><td>MSBuild<\/td><td>Visual Studio Build Tools\u306b\u542b\u307e\u308c\u308b<\/td><\/tr><tr><td>Linux<\/td><td>Make\/Ninja<\/td><td><code>apt install make ninja-build<\/code><\/td><\/tr><tr><td>macOS<\/td><td>Make\/Ninja<\/td><td><code>brew install ninja<\/code><\/td><\/tr><\/tbody><\/table><\/figure>\n<\/div>\n\n\n<h3 class=\"wp-block-heading\" id=\"i-24\">\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u521d\u671f\u8a2d\u5b9a<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u57fa\u672c\u7684\u306a\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u69cb\u9020\u306e\u4f5c\u6210<\/strong><\/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=\"\">   mkdir MyProject\n   cd MyProject\n   mkdir build src include tests<\/pre>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li><strong>\u521d\u671fCMakeLists\u30d5\u30a1\u30a4\u30eb\u306e\u4f5c\u6210<\/strong><\/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=\"\">   # CMakeLists.txt\n   cmake_minimum_required(VERSION 3.10)\n   project(MyProject VERSION 1.0)\n\n   # \u30b3\u30f3\u30d1\u30a4\u30e9\u8a2d\u5b9a\n   set(CMAKE_CXX_STANDARD 17)\n   set(CMAKE_CXX_STANDARD_REQUIRED ON)\n\n   # \u30d3\u30eb\u30c9\u8a2d\u5b9a\n   if(NOT CMAKE_BUILD_TYPE)\n       set(CMAKE_BUILD_TYPE Release)\n   endif()\n\n   # \u51fa\u529b\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u8a2d\u5b9a\n   set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}\/bin)\n   set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}\/lib)<\/pre>\n\n\n\n<ol start=\"3\" class=\"wp-block-list\">\n<li><strong>\u30d3\u30eb\u30c9\u306e\u78ba\u8a8d<\/strong><\/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\u3067\u5b9f\u884c\n   cd build\n   cmake ..\n   cmake --build .<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-25\">\u30c8\u30e9\u30d6\u30eb\u30b7\u30e5\u30fc\u30c6\u30a3\u30f3\u30b0<\/h3>\n\n\n\n<p>\u3088\u304f\u3042\u308b\u74b0\u5883\u69cb\u7bc9\u306e\u554f\u984c\u3068\u89e3\u6c7a\u65b9\u6cd5\uff1a<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>PATH\u8a2d\u5b9a\u306e\u554f\u984c<\/strong><\/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=\"\">   # Windows\u306e\u5834\u5408\n   # \u30b7\u30b9\u30c6\u30e0\u74b0\u5883\u5909\u6570\u306b\u4ee5\u4e0b\u3092\u8ffd\u52a0\n   C:\\Program Files\\CMake\\bin\n\n   # Linux\/macOS\u306e\u5834\u5408\n   export PATH=\"\/usr\/local\/cmake\/bin:$PATH\"<\/pre>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li><strong>\u30b3\u30f3\u30d1\u30a4\u30e9\u691c\u51fa\u306e\u554f\u984c<\/strong><\/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\u306e\u30ad\u30e3\u30c3\u30b7\u30e5\u3092\u30af\u30ea\u30a2\n   rm -rf CMakeCache.txt\n   rm -rf CMakeFiles\/\n\n   # \u30b3\u30f3\u30d1\u30a4\u30e9\u3092\u660e\u793a\u7684\u306b\u6307\u5b9a\u3057\u3066\u518d\u5b9f\u884c\n   cmake -D CMAKE_C_COMPILER=\/usr\/bin\/gcc -D CMAKE_CXX_COMPILER=\/usr\/bin\/g++ ..<\/pre>\n\n\n\n<ol start=\"3\" class=\"wp-block-list\">\n<li><strong>\u4f9d\u5b58\u30e9\u30a4\u30d6\u30e9\u30ea\u306e\u554f\u984c<\/strong><\/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=\"\">   # Windows\u306e\u5834\u5408\n   vcpkg install [package-name]\n\n   # Linux\/macOS\u306e\u5834\u5408\n   # \u5fc5\u8981\u306adev\/devel\u30d1\u30c3\u30b1\u30fc\u30b8\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\n   sudo apt install libboost-dev  # \u4f8b\uff1aBoost<\/pre>\n\n\n\n<p>\u3053\u308c\u3067\u57fa\u672c\u7684\u306a\u74b0\u5883\u69cb\u7bc9\u306f\u5b8c\u4e86\u3067\u3059\u3002\u6b21\u306e\u30b9\u30c6\u30c3\u30d7\u3068\u3057\u3066\u3001\u5b9f\u969b\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u30d3\u30eb\u30c9\u306b\u79fb\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-26\">CMake\u306e\u5b9f\u8df5\u7684\u306a\u4f7f\u7528\u65b9\u6cd5<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-27\">\u57fa\u672c\u7684\u306a\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u69cb\u6210\u306e\u4f5c\u6210<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-28\">1. \u30b7\u30f3\u30d7\u30eb\u306a\u5b9f\u884c\u53ef\u80fd\u30d5\u30a1\u30a4\u30eb\u306e\u4f5c\u6210<\/h4>\n\n\n\n<p>\u4ee5\u4e0b\u306e\u3088\u3046\u306a\u57fa\u672c\u7684\u306a\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u69cb\u9020\u304b\u3089\u59cb\u3081\u307e\u3057\u3087\u3046\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=\"\">MyProject\/\n\u251c\u2500\u2500 CMakeLists.txt\n\u251c\u2500\u2500 include\/\n\u2502   \u2514\u2500\u2500 calculator.hpp\n\u2514\u2500\u2500 src\/\n    \u251c\u2500\u2500 calculator.cpp\n    \u2514\u2500\u2500 main.cpp<\/pre>\n\n\n\n<p><strong>calculator.hpp<\/strong>:<\/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=\"\">\/\/ include\/calculator.hpp\n#pragma once\n\nclass Calculator {\npublic:\n    double add(double a, double b);\n    double subtract(double a, double b);\n};<\/pre>\n\n\n\n<p><strong>calculator.cpp<\/strong>:<\/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=\"\">\/\/ src\/calculator.cpp\n#include \"calculator.hpp\"\n\ndouble Calculator::add(double a, double b) {\n    return a + b;\n}\n\ndouble Calculator::subtract(double a, double b) {\n    return a - b;\n}<\/pre>\n\n\n\n<p><strong>main.cpp<\/strong>:<\/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=\"\">\/\/ src\/main.cpp\n#include &lt;iostream&gt;\n#include \"calculator.hpp\"\n\nint main() {\n    Calculator calc;\n    std::cout &lt;&lt; \"10 + 5 = \" &lt;&lt; calc.add(10, 5) &lt;&lt; std::endl;\n    return 0;\n}<\/pre>\n\n\n\n<p><strong>CMakeLists.txt<\/strong>:<\/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=\"\"># \u6700\u5c0f\u30d0\u30fc\u30b8\u30e7\u30f3\u8981\u4ef6\ncmake_minimum_required(VERSION 3.10)\n\n# \u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u540d\u3068\u8a00\u8a9e\u306e\u8a2d\u5b9a\nproject(MyProject VERSION 1.0 LANGUAGES CXX)\n\n# C++\u6a19\u6e96\u306e\u8a2d\u5b9a\nset(CMAKE_CXX_STANDARD 17)\nset(CMAKE_CXX_STANDARD_REQUIRED ON)\n\n# \u30bd\u30fc\u30b9\u30d5\u30a1\u30a4\u30eb\u306e\u53ce\u96c6\nfile(GLOB_RECURSE 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} PRIVATE include)<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-29\">\u30e9\u30a4\u30d6\u30e9\u30ea\u3068\u306e\u4f9d\u5b58\u95a2\u4fc2\u306e\u7ba1\u7406<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-30\">1. \u5916\u90e8\u30e9\u30a4\u30d6\u30e9\u30ea\u306e\u691c\u7d22\u3068\u7d71\u5408<\/h4>\n\n\n\n<p><strong>Boost\u5229\u7528\u306e\u4f8b<\/strong>:<\/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=\"\"># Boost\u306e\u691c\u7d22\nfind_package(Boost REQUIRED COMPONENTS system filesystem)\n\n# \u30bf\u30fc\u30b2\u30c3\u30c8\u3078\u306e\u30ea\u30f3\u30af\ntarget_link_libraries(${PROJECT_NAME} PRIVATE\n    Boost::system\n    Boost::filesystem\n)<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-31\">2. \u81ea\u4f5c\u30e9\u30a4\u30d6\u30e9\u30ea\u306e\u4f5c\u6210\u3068\u5229\u7528<\/h4>\n\n\n\n<p>\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u69cb\u9020\u3092\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u62e1\u5f35\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=\"\">MyProject\/\n\u251c\u2500\u2500 CMakeLists.txt\n\u251c\u2500\u2500 lib\/\n\u2502   \u251c\u2500\u2500 CMakeLists.txt\n\u2502   \u251c\u2500\u2500 include\/\n\u2502   \u2502   \u2514\u2500\u2500 mylib\/\n\u2502   \u2502       \u2514\u2500\u2500 mylib.hpp\n\u2502   \u2514\u2500\u2500 src\/\n\u2502       \u2514\u2500\u2500 mylib.cpp\n\u2514\u2500\u2500 src\/\n    \u2514\u2500\u2500 main.cpp<\/pre>\n\n\n\n<p><strong>lib\/CMakeLists.txt<\/strong>:<\/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=\"\"># \u30e9\u30a4\u30d6\u30e9\u30ea\u306e\u30bd\u30fc\u30b9\u53ce\u96c6\nfile(GLOB_RECURSE LIB_SOURCES src\/*.cpp)\n\n# \u30e9\u30a4\u30d6\u30e9\u30ea\u306e\u4f5c\u6210\nadd_library(mylib STATIC ${LIB_SOURCES})\n\n# \u30a4\u30f3\u30af\u30eb\u30fc\u30c9\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306e\u8a2d\u5b9a\ntarget_include_directories(mylib\n    PUBLIC\n        $&lt;BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}\/include&gt;\n        $&lt;INSTALL_INTERFACE:include&gt;\n    PRIVATE\n        ${CMAKE_CURRENT_SOURCE_DIR}\/src\n)\n\n# \u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u30eb\u30fc\u30eb\u306e\u8a2d\u5b9a\ninstall(TARGETS mylib\n    EXPORT mylibTargets\n    LIBRARY DESTINATION lib\n    ARCHIVE DESTINATION lib\n    RUNTIME DESTINATION bin\n    INCLUDES DESTINATION include\n)<\/pre>\n\n\n\n<p><strong>\u30c8\u30c3\u30d7\u30ec\u30d9\u30ebCMakeLists.txt<\/strong>:<\/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)\n\n# \u30b5\u30d6\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306e\u8ffd\u52a0\nadd_subdirectory(lib)\n\n# \u30e1\u30a4\u30f3\u5b9f\u884c\u30d5\u30a1\u30a4\u30eb\u306e\u4f5c\u6210\nadd_executable(${PROJECT_NAME} src\/main.cpp)\ntarget_link_libraries(${PROJECT_NAME} PRIVATE mylib)<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-32\">\u30af\u30ed\u30b9\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u30d3\u30eb\u30c9\u306e\u8a2d\u5b9a<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-33\">1. \u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u56fa\u6709\u306e\u8a2d\u5b9a<\/h4>\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    # Windows\u306e\u5834\u5408\u306e\u8a2d\u5b9a\n    target_compile_definitions(${PROJECT_NAME} PRIVATE\n        WIN32_LEAN_AND_MEAN\n        NOMINMAX\n    )\n\n    # Windows\u5c02\u7528\u306e\u30bd\u30fc\u30b9\u30d5\u30a1\u30a4\u30eb\u8ffd\u52a0\n    target_sources(${PROJECT_NAME} PRIVATE\n        src\/windows\/win_specific.cpp\n    )\nelseif(UNIX AND NOT APPLE)\n    # Linux\u56fa\u6709\u306e\u8a2d\u5b9a\n    target_compile_definitions(${PROJECT_NAME} PRIVATE\n        LINUX_BUILD\n    )\n\n    # Linux\u5c02\u7528\u30e9\u30a4\u30d6\u30e9\u30ea\u306e\u30ea\u30f3\u30af\n    target_link_libraries(${PROJECT_NAME} PRIVATE\n        pthread\n        dl\n    )\nelseif(APPLE)\n    # macOS\u56fa\u6709\u306e\u8a2d\u5b9a\n    target_compile_definitions(${PROJECT_NAME} PRIVATE\n        MACOS_BUILD\n    )\n\n    # macOS\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u306e\u8ffd\u52a0\n    target_link_libraries(${PROJECT_NAME} PRIVATE\n        \"-framework CoreFoundation\"\n    )\nendif()<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-34\">2. \u30b3\u30f3\u30d1\u30a4\u30e9\u56fa\u6709\u306e\u8a2d\u5b9a<\/h4>\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\u691c\u51fa\u3068\u6700\u9069\u5316\u8a2d\u5b9a\nif(MSVC)\n    # Visual Studio\u8a2d\u5b9a\n    target_compile_options(${PROJECT_NAME} PRIVATE\n        \/W4     # \u8b66\u544a\u30ec\u30d9\u30eb4\n        \/WX     # \u8b66\u544a\u3092\u30a8\u30e9\u30fc\u3068\u3057\u3066\u6271\u3046\n        \/MP     # \u30de\u30eb\u30c1\u30d7\u30ed\u30bb\u30b9\u30b3\u30f3\u30d1\u30a4\u30eb\n        $&lt;$&lt;CONFIG:Release&gt;:\/O2&gt;  # \u6700\u9069\u5316\u30ec\u30d9\u30eb\n    )\nelse()\n    # GCC\/Clang\u8a2d\u5b9a\n    target_compile_options(${PROJECT_NAME} PRIVATE\n        -Wall\n        -Wextra\n        -Werror\n        $&lt;$&lt;CONFIG:Release&gt;:-O3&gt;\n    )\nendif()<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-35\">3. \u6761\u4ef6\u4ed8\u304d\u30d3\u30eb\u30c9\u8a2d\u5b9a<\/h4>\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\u8a2d\u5b9a\u30aa\u30d7\u30b7\u30e7\u30f3\noption(BUILD_TESTS \"Build test suite\" ON)\noption(BUILD_DOCS \"Build documentation\" OFF)\noption(ENABLE_OPTIMIZATION \"Enable optimization\" ON)\n\n# \u6700\u9069\u5316\u8a2d\u5b9a\u306e\u9069\u7528\nif(ENABLE_OPTIMIZATION)\n    if(MSVC)\n        add_compile_options(\/O2)\n    else()\n        add_compile_options(-O3)\n    endif()\nendif()\n\n# \u30c6\u30b9\u30c8\u306e\u30d3\u30eb\u30c9\nif(BUILD_TESTS)\n    enable_testing()\n    add_subdirectory(tests)\nendif()\n\n# \u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u306e\u30d3\u30eb\u30c9\nif(BUILD_DOCS)\n    find_package(Doxygen REQUIRED)\n    add_subdirectory(docs)\nendif()<\/pre>\n\n\n\n<p>\u3053\u308c\u3089\u306e\u8a2d\u5b9a\u3092\u7d44\u307f\u5408\u308f\u305b\u308b\u3053\u3068\u3067\u3001\u7570\u306a\u308b\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u3084\u30b3\u30f3\u30d1\u30a4\u30e9\u306b\u5bfe\u5fdc\u3057\u305f\u5805\u7262\u306a\u30d3\u30eb\u30c9\u30b7\u30b9\u30c6\u30e0\u3092\u69cb\u7bc9\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-36\">CMake\u306e\u9ad8\u5ea6\u306a\u6a5f\u80fd\u6d3b\u7528\u30c6\u30af\u30cb\u30c3\u30af<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-37\">\u30ab\u30b9\u30bf\u30e0\u30b3\u30de\u30f3\u30c9\u3068\u30bf\u30fc\u30b2\u30c3\u30c8\u306e\u4f5c\u6210<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-38\">1. \u30ab\u30b9\u30bf\u30e0\u30b3\u30de\u30f3\u30c9\u306e\u5b9a\u7fa9<\/h4>\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\u81ea\u52d5\u751f\u6210\nadd_custom_command(\n    OUTPUT ${CMAKE_CURRENT_BINARY_DIR}\/generated_code.cpp\n    COMMAND python ${CMAKE_CURRENT_SOURCE_DIR}\/scripts\/generate_code.py\n    DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}\/scripts\/generate_code.py\n    COMMENT \"Generating source code...\"\n)\n\n# \u751f\u6210\u3055\u308c\u305f\u30bd\u30fc\u30b9\u30d5\u30a1\u30a4\u30eb\u306e\u5229\u7528\nadd_library(generated_lib ${CMAKE_CURRENT_BINARY_DIR}\/generated_code.cpp)<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-39\">2. \u30ab\u30b9\u30bf\u30e0\u30bf\u30fc\u30b2\u30c3\u30c8\u306e\u4f5c\u6210<\/h4>\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\nadd_custom_target(docs\n    COMMAND doxygen ${CMAKE_CURRENT_SOURCE_DIR}\/Doxyfile\n    WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}\n    COMMENT \"Generating API documentation with Doxygen\"\n    VERBATIM\n)\n\n# \u30ea\u30bd\u30fc\u30b9\u306e\u30b3\u30d4\u30fc\u30bf\u30fc\u30b2\u30c3\u30c8\nadd_custom_target(copy_resources ALL\n    COMMAND ${CMAKE_COMMAND} -E copy_directory\n        ${CMAKE_SOURCE_DIR}\/resources\n        ${CMAKE_BINARY_DIR}\/resources\n    COMMENT \"Copying resource files...\"\n)<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-40\">\u6761\u4ef6\u5206\u5c90\u3068\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u5225\u306e\u8a2d\u5b9a<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-41\">1. \u9ad8\u5ea6\u306a\u6761\u4ef6\u5206\u5c90<\/h4>\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=\"\"># \u6a5f\u80fd\u306e\u6709\u52b9\u5316\u30aa\u30d7\u30b7\u30e7\u30f3\noption(ENABLE_FEATURE_X \"Enable Feature X\" OFF)\noption(USE_STATIC_LIBS \"Use static libraries\" ON)\n\n# \u30b3\u30f3\u30d1\u30a4\u30e9\u691c\u51fa\u3068\u6700\u9069\u5316\u8a2d\u5b9a\ninclude(CheckCXXCompilerFlag)\ncheck_cxx_compiler_flag(\"-march=native\" COMPILER_SUPPORTS_MARCH_NATIVE)\n\nif(COMPILER_SUPPORTS_MARCH_NATIVE)\n    target_compile_options(${PROJECT_NAME} PRIVATE\n        $&lt;$&lt;CONFIG:Release&gt;:-march=native&gt;\n    )\nendif()\n\n# \u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u56fa\u6709\u306e\u6700\u9069\u5316\nif(MSVC)\n    # Visual Studio\u306e\u5834\u5408\u306e\u9ad8\u5ea6\u306a\u6700\u9069\u5316\n    target_compile_options(${PROJECT_NAME} PRIVATE\n        $&lt;$&lt;CONFIG:Release&gt;:\/GL&gt;  # \u5168\u4f53\u6700\u9069\u5316\n        $&lt;$&lt;CONFIG:Release&gt;:\/Gy&gt;  # \u95a2\u6570\u5358\u4f4d\u306e\u30ea\u30f3\u30af\n    )\n    target_link_options(${PROJECT_NAME} PRIVATE\n        $&lt;$&lt;CONFIG:Release&gt;:\/LTCG&gt;  # \u30ea\u30f3\u30af\u6642\u30b3\u30fc\u30c9\u751f\u6210\n    )\nelseif(CMAKE_CXX_COMPILER_ID MATCHES \"GNU|Clang\")\n    # GCC\/Clang\u306e\u5834\u5408\u306e\u9ad8\u5ea6\u306a\u6700\u9069\u5316\n    target_compile_options(${PROJECT_NAME} PRIVATE\n        $&lt;$&lt;CONFIG:Release&gt;:-flto&gt;  # \u30ea\u30f3\u30af\u6642\u6700\u9069\u5316\n        $&lt;$&lt;CONFIG:Release&gt;:-ffunction-sections&gt;\n        $&lt;$&lt;CONFIG:Release&gt;:-fdata-sections&gt;\n    )\n    target_link_options(${PROJECT_NAME} PRIVATE\n        $&lt;$&lt;CONFIG:Release&gt;:-flto&gt;\n        $&lt;$&lt;CONFIG:Release&gt;:-Wl,--gc-sections&gt;\n    )\nendif()<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-42\">2. \u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u5225\u306e\u9ad8\u5ea6\u306a\u8a2d\u5b9a<\/h4>\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\u56fa\u6709\u306e\u6a5f\u80fd\u691c\u51fa\ninclude(CheckIncludeFileCXX)\ninclude(CheckSymbolExists)\ncheck_include_file_cxx(\"sys\/epoll.h\" HAVE_EPOLL)\ncheck_symbol_exists(kqueue \"sys\/event.h\" HAVE_KQUEUE)\n\n# \u691c\u51fa\u7d50\u679c\u306b\u57fa\u3065\u304f\u8a2d\u5b9a\nconfigure_file(\n    ${CMAKE_CURRENT_SOURCE_DIR}\/config.h.in\n    ${CMAKE_CURRENT_BINARY_DIR}\/config.h\n)\n\n# \u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u56fa\u6709\u306e\u30bd\u30fc\u30b9\u8ffd\u52a0\nif(WIN32)\n    target_sources(${PROJECT_NAME} PRIVATE\n        src\/platform\/windows\/win_socket.cpp\n        src\/platform\/windows\/win_thread.cpp\n    )\nelseif(HAVE_EPOLL)\n    target_sources(${PROJECT_NAME} PRIVATE\n        src\/platform\/linux\/epoll_reactor.cpp\n    )\nelseif(HAVE_KQUEUE)\n    target_sources(${PROJECT_NAME} PRIVATE\n        src\/platform\/bsd\/kqueue_reactor.cpp\n    )\nendif()<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-43\">\u5916\u90e8\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u7d71\u5408\u7ba1\u7406<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-44\">1. ExternalProject\u306e\u9ad8\u5ea6\u306a\u4f7f\u7528<\/h4>\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\n# GoogleTest\u306e\u7d71\u5408\nExternalProject_Add(googletest\n    GIT_REPOSITORY https:\/\/github.com\/google\/googletest.git\n    GIT_TAG master\n    CMAKE_ARGS\n        -DCMAKE_INSTALL_PREFIX=${CMAKE_BINARY_DIR}\/external\/googletest\n        -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}\n        -DBUILD_GMOCK=OFF\n    UPDATE_COMMAND \"\"\n)\n\n# \u4f9d\u5b58\u95a2\u4fc2\u306e\u8a2d\u5b9a\nadd_dependencies(${PROJECT_NAME} googletest)\ntarget_include_directories(${PROJECT_NAME} PRIVATE\n    ${CMAKE_BINARY_DIR}\/external\/googletest\/include\n)\ntarget_link_directories(${PROJECT_NAME} PRIVATE\n    ${CMAKE_BINARY_DIR}\/external\/googletest\/lib\n)<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-45\">2. FetchContent\u3092\u4f7f\u7528\u3057\u305f\u4f9d\u5b58\u95a2\u4fc2\u7ba1\u7406<\/h4>\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\n# \u8907\u6570\u306e\u5916\u90e8\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u5ba3\u8a00\nFetchContent_Declare(\n    json\n    GIT_REPOSITORY https:\/\/github.com\/nlohmann\/json.git\n    GIT_TAG v3.11.2\n)\n\nFetchContent_Declare(\n    spdlog\n    GIT_REPOSITORY https:\/\/github.com\/gabime\/spdlog.git\n    GIT_TAG v1.11.0\n)\n\n# \u4f9d\u5b58\u95a2\u4fc2\u306e\u540c\u6642\u53d6\u5f97\nFetchContent_MakeAvailable(json spdlog)\n\n# \u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3067\u306e\u4f7f\u7528\ntarget_link_libraries(${PROJECT_NAME} PRIVATE\n    nlohmann_json::nlohmann_json\n    spdlog::spdlog\n)<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-46\">3. \u30ab\u30b9\u30bf\u30e0\u30d1\u30c3\u30b1\u30fc\u30b8\u306e\u4f5c\u6210\u3068\u914d\u5e03<\/h4>\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\u8a2d\u5b9a\ninclude(CMakePackageConfigHelpers)\n\n# \u30d0\u30fc\u30b8\u30e7\u30f3\u30d5\u30a1\u30a4\u30eb\u306e\u8a2d\u5b9a\nwrite_basic_package_version_file(\n    \"${CMAKE_CURRENT_BINARY_DIR}\/${PROJECT_NAME}ConfigVersion.cmake\"\n    VERSION ${PROJECT_VERSION}\n    COMPATIBILITY SameMajorVersion\n)\n\n# \u30d1\u30c3\u30b1\u30fc\u30b8\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u306e\u751f\u6210\nconfigure_package_config_file(\n    \"${CMAKE_CURRENT_SOURCE_DIR}\/cmake\/${PROJECT_NAME}Config.cmake.in\"\n    \"${CMAKE_CURRENT_BINARY_DIR}\/${PROJECT_NAME}Config.cmake\"\n    INSTALL_DESTINATION lib\/cmake\/${PROJECT_NAME}\n)\n\n# \u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u30eb\u30fc\u30eb\u306e\u8a2d\u5b9a\ninstall(\n    FILES\n        \"${CMAKE_CURRENT_BINARY_DIR}\/${PROJECT_NAME}Config.cmake\"\n        \"${CMAKE_CURRENT_BINARY_DIR}\/${PROJECT_NAME}ConfigVersion.cmake\"\n    DESTINATION lib\/cmake\/${PROJECT_NAME}\n)\n\ninstall(\n    EXPORT ${PROJECT_NAME}Targets\n    FILE ${PROJECT_NAME}Targets.cmake\n    NAMESPACE ${PROJECT_NAME}::\n    DESTINATION lib\/cmake\/${PROJECT_NAME}\n)<\/pre>\n\n\n\n<p>\u3053\u308c\u3089\u306e\u9ad8\u5ea6\u306a\u6a5f\u80fd\u3092\u9069\u5207\u306b\u7d44\u307f\u5408\u308f\u305b\u308b\u3053\u3068\u3067\u3001\u3088\u308a\u67d4\u8edf\u3067\u4fdd\u5b88\u6027\u306e\u9ad8\u3044\u30d3\u30eb\u30c9\u30b7\u30b9\u30c6\u30e0\u3092\u69cb\u7bc9\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-47\">CMake\u3092\u4f7f\u7528\u3057\u305f\u30c1\u30fc\u30e0\u958b\u767a\u306e\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-48\">\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u69cb\u9020\u306e\u6a19\u6e96\u5316\u3068\u7ba1\u7406<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-49\">1. \u63a8\u5968\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u69cb\u9020<\/h4>\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=\"\">project-root\/\n\u251c\u2500\u2500 .github\/              # GitHub Actions\u8a2d\u5b9a\n\u251c\u2500\u2500 .gitlab-ci.yml        # GitLab CI\u8a2d\u5b9a\n\u251c\u2500\u2500 CMakeLists.txt       # \u30c8\u30c3\u30d7\u30ec\u30d9\u30ebCMake\u8a2d\u5b9a\n\u251c\u2500\u2500 cmake\/               # CMake\u30e2\u30b8\u30e5\u30fc\u30eb\u3068\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\n\u2502   \u251c\u2500\u2500 modules\/         # \u30ab\u30b9\u30bf\u30e0\u30e2\u30b8\u30e5\u30fc\u30eb\n\u2502   \u2514\u2500\u2500 templates\/       # \u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u30d5\u30a1\u30a4\u30eb\n\u251c\u2500\u2500 docs\/                # \u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\n\u251c\u2500\u2500 include\/             # \u30d1\u30d6\u30ea\u30c3\u30af\u30d8\u30c3\u30c0\u30fc\n\u251c\u2500\u2500 src\/                 # \u30bd\u30fc\u30b9\u30d5\u30a1\u30a4\u30eb\n\u251c\u2500\u2500 tests\/               # \u30c6\u30b9\u30c8\u30d5\u30a1\u30a4\u30eb\n\u2514\u2500\u2500 third_party\/        # \u30b5\u30fc\u30c9\u30d1\u30fc\u30c6\u30a3\u30e9\u30a4\u30d6\u30e9\u30ea<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-50\">2. \u547d\u540d\u898f\u5247\u3068\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0\u898f\u7d04<\/h4>\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\u547d\u540d\u898f\u5247\nset(MY_PROJECT_VERSION \"1.0.0\")\nset(MY_PROJECT_OPTIONS \"-Wall\" \"-Wextra\")\n\n# \u30bf\u30fc\u30b2\u30c3\u30c8\u547d\u540d\u898f\u5247\nadd_library(my_project_core STATIC ${CORE_SOURCES})\nadd_executable(my_project_app ${APP_SOURCES})\n\n# \u30aa\u30d7\u30b7\u30e7\u30f3\u547d\u540d\u898f\u5247\noption(MY_PROJECT_BUILD_TESTS \"Build test suite\" ON)\noption(MY_PROJECT_USE_STATIC_LIBS \"Use static libraries\" OFF)<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-51\">3. \u30e2\u30b8\u30e5\u30fc\u30eb\u5316\u3068\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u5206\u5272<\/h4>\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\u30dd\u30fc\u30cd\u30f3\u30c8\u5225\u306eCMakeLists.txt\nadd_subdirectory(core)\nadd_subdirectory(network)\nadd_subdirectory(ui)\n\n# \u5404\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u306e\u4f9d\u5b58\u95a2\u4fc2\u7ba1\u7406\ntarget_link_libraries(my_project_ui\n    PRIVATE\n        my_project_core\n        my_project_network\n)<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-52\">\u5171\u901a\u306e\u8a2d\u5b9a\u3068\u30d3\u30eb\u30c9\u30b9\u30af\u30ea\u30d7\u30c8\u306e\u5171\u6709<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-53\">1. \u5171\u901a\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u306e\u4f5c\u6210<\/h4>\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\/CommonSettings.cmake\nfunction(set_common_settings target)\n    target_compile_features(${target} PRIVATE cxx_std_17)\n\n    if(MSVC)\n        target_compile_options(${target} PRIVATE\n            \/W4\n            \/WX\n            \/wd4100  # \u672a\u4f7f\u7528\u30d1\u30e9\u30e1\u30fc\u30bf\u306e\u8b66\u544a\u3092\u7121\u8996\n        )\n    else()\n        target_compile_options(${target} PRIVATE\n            -Wall\n            -Wextra\n            -Werror\n        )\n    endif()\n\n    target_compile_definitions(${target} PRIVATE\n        $&lt;$&lt;CONFIG:Debug&gt;:DEBUG_MODE&gt;\n        $&lt;$&lt;CONFIG:Release&gt;:NDEBUG&gt;\n    )\nendfunction()\n\n# \u4f7f\u7528\u4f8b\ninclude(CommonSettings)\nset_common_settings(${PROJECT_NAME})<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-54\">2. \u30d0\u30fc\u30b8\u30e7\u30f3\u7ba1\u7406\u306e\u7d71\u4e00<\/h4>\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\/Version.cmake\nset(PROJECT_VERSION_MAJOR 1)\nset(PROJECT_VERSION_MINOR 0)\nset(PROJECT_VERSION_PATCH 0)\nset(PROJECT_VERSION \"${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_PATCH}\")\n\nconfigure_file(\n    ${CMAKE_CURRENT_SOURCE_DIR}\/cmake\/templates\/version.h.in\n    ${CMAKE_CURRENT_BINARY_DIR}\/include\/version.h\n    @ONLY\n)<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-55\">3. \u4f9d\u5b58\u95a2\u4fc2\u7ba1\u7406\u306e\u6a19\u6e96\u5316<\/h4>\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\/Dependencies.cmake\ninclude(FetchContent)\n\nfunction(fetch_dependencies)\n    FetchContent_Declare(\n        googletest\n        GIT_REPOSITORY https:\/\/github.com\/google\/googletest.git\n        GIT_TAG release-1.12.1\n    )\n\n    FetchContent_Declare(\n        spdlog\n        GIT_REPOSITORY https:\/\/github.com\/gabime\/spdlog.git\n        GIT_TAG v1.11.0\n    )\n\n    FetchContent_MakeAvailable(googletest spdlog)\nendfunction()<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-56\">CI\u30d1\u30a4\u30d7\u30e9\u30a4\u30f3\u3067\u306eCMake\u306e\u6d3b\u7528\u65b9\u6cd5<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-57\">1. GitHub Actions\u8a2d\u5b9a\u4f8b<\/h4>\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: [push, pull_request]\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: cmake -B build -DCMAKE_BUILD_TYPE=${{ matrix.build_type }}\n\n    - name: Build\n      run: cmake --build build --config ${{ matrix.build_type }}\n\n    - name: Test\n      working-directory: build\n      run: ctest -C ${{ matrix.build_type }} --output-on-failure<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-58\">2. GitLab CI\u8a2d\u5b9a\u4f8b<\/h4>\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=\"\"># .gitlab-ci.yml\nvariables:\n  GIT_SUBMODULE_STRATEGY: recursive\n\n.build_template: &amp;build_definition\n  script:\n    - cmake -B build -DCMAKE_BUILD_TYPE=$BUILD_TYPE\n    - cmake --build build\n    - cd build &amp;&amp; ctest --output-on-failure\n\nbuild:debug:\n  &lt;&lt;: *build_definition\n  variables:\n    BUILD_TYPE: Debug\n\nbuild:release:\n  &lt;&lt;: *build_definition\n  variables:\n    BUILD_TYPE: Release<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-59\">3. \u30d3\u30eb\u30c9\u8a2d\u5b9a\u306e\u81ea\u52d5\u5316<\/h4>\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\/BuildSettings.cmake\nfunction(configure_build_settings)\n    # \u30c7\u30d5\u30a9\u30eb\u30c8\u306e\u30d3\u30eb\u30c9\u30bf\u30a4\u30d7\u8a2d\u5b9a\n    if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES)\n        set(CMAKE_BUILD_TYPE \"Release\" CACHE STRING \"Build type\" FORCE)\n        set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS\n            \"Debug\" \"Release\" \"MinSizeRel\" \"RelWithDebInfo\")\n    endif()\n\n    # \u30b3\u30f3\u30d1\u30a4\u30e9\u30d5\u30e9\u30b0\u306e\u8a2d\u5b9a\n    set(CMAKE_CXX_FLAGS_DEBUG \"${CMAKE_CXX_FLAGS_DEBUG} -DDEBUG_MODE\")\n    set(CMAKE_CXX_FLAGS_RELEASE \"${CMAKE_CXX_FLAGS_RELEASE} -DNDEBUG\")\n\n    # \u51fa\u529b\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306e\u8a2d\u5b9a\n    set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}\/bin)\n    set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}\/lib)\n    set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}\/lib)\nendfunction()<\/pre>\n\n\n\n<p>\u3053\u308c\u3089\u306e\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9\u3092\u9069\u7528\u3059\u308b\u3053\u3068\u3067\u3001\u30c1\u30fc\u30e0\u958b\u767a\u306b\u304a\u3051\u308b\u4e00\u8cab\u6027\u3068\u52b9\u7387\u6027\u3092\u78ba\u4fdd\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-60\">CMake\u306e\u30c8\u30e9\u30d6\u30eb\u30b7\u30e5\u30fc\u30c6\u30a3\u30f3\u30b0\u3068\u30c7\u30d0\u30c3\u30b0<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-61\">\u4e00\u822c\u7684\u306a\u30a8\u30e9\u30fc\u3068\u305d\u306e\u89e3\u6c7a\u65b9\u6cd5<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-62\">1. \u30d1\u30b9\u95a2\u9023\u306e\u30a8\u30e9\u30fc<\/h4>\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\u4f8b:\n# Could not find package \"SomePackage\"<\/pre>\n\n\n\n<p>\u89e3\u6c7a\u7b56:<\/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=\"\"># \u30d1\u30c3\u30b1\u30fc\u30b8\u306e\u30d1\u30b9\u3092\u660e\u793a\u7684\u306b\u6307\u5b9a\nset(SomePackage_DIR \"\/path\/to\/package\")\n# \u307e\u305f\u306f\u74b0\u5883\u5909\u6570\u3067\u8a2d\u5b9a\nset(CMAKE_PREFIX_PATH ${CMAKE_PREFIX_PATH} \"\/path\/to\/package\")\n\n# \u30d1\u30b9\u306e\u30c7\u30d0\u30c3\u30b0\u51fa\u529b\nmessage(STATUS \"CMAKE_MODULE_PATH: ${CMAKE_MODULE_PATH}\")\nmessage(STATUS \"CMAKE_PREFIX_PATH: ${CMAKE_PREFIX_PATH}\")<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-63\">2. \u30b3\u30f3\u30d1\u30a4\u30e9\u691c\u51fa\u306e\u554f\u984c<\/h4>\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\u4f8b:\n# No CMAKE_CXX_COMPILER could be found<\/pre>\n\n\n\n<p>\u89e3\u6c7a\u7b56:<\/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\u30f3\u30d1\u30a4\u30e9\u3092\u660e\u793a\u7684\u306b\u6307\u5b9a\nset(CMAKE_CXX_COMPILER \"\/path\/to\/g++\")\n# \u307e\u305f\u306f\ncmake -DCMAKE_CXX_COMPILER=\/path\/to\/g++ ..\n\n# \u30b3\u30f3\u30d1\u30a4\u30e9\u60c5\u5831\u306e\u51fa\u529b\nmessage(STATUS \"C++ Compiler: ${CMAKE_CXX_COMPILER}\")\nmessage(STATUS \"C++ Compiler ID: ${CMAKE_CXX_COMPILER_ID}\")\nmessage(STATUS \"C++ Compiler Version: ${CMAKE_CXX_COMPILER_VERSION}\")<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-64\">3. \u30ea\u30f3\u30af\u30a8\u30e9\u30fc<\/h4>\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\u4f8b:\n# undefined reference to `function_name'<\/pre>\n\n\n\n<p>\u89e3\u6c7a\u7b56:<\/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=\"\"># \u30ea\u30f3\u30af\u9806\u5e8f\u306e\u4fee\u6b63\ntarget_link_libraries(${PROJECT_NAME} \n    PRIVATE\n        dependency1  # \u4f9d\u5b58\u3059\u308b\u30e9\u30a4\u30d6\u30e9\u30ea\u3092\u5148\u306b\n        dependency2  # \u9806\u5e8f\u304c\u91cd\u8981\n)\n\n# \u30ea\u30f3\u30af\u60c5\u5831\u306e\u30c7\u30d0\u30c3\u30b0\nset(CMAKE_VERBOSE_MAKEFILE ON)\nmessage(STATUS \"Libraries: ${CMAKE_CXX_IMPLICIT_LINK_LIBRARIES}\")<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-65\">\u30d3\u30eb\u30c9\u554f\u984c\u306e\u30c7\u30d0\u30c3\u30b0\u30c6\u30af\u30cb\u30c3\u30af<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-66\">1. CMake\u306e\u30c7\u30d0\u30c3\u30b0\u51fa\u529b\u306e\u6d3b\u7528<\/h4>\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\u5185\u5bb9\u78ba\u8a8d\nmessage(STATUS \"Project source dir: ${CMAKE_SOURCE_DIR}\")\nmessage(STATUS \"Build type: ${CMAKE_BUILD_TYPE}\")\n\n# \u30bf\u30fc\u30b2\u30c3\u30c8\u306e\u30d7\u30ed\u30d1\u30c6\u30a3\u78ba\u8a8d\nget_target_property(TARGET_INCLUDES ${PROJECT_NAME} INCLUDE_DIRECTORIES)\nmessage(STATUS \"Include directories: ${TARGET_INCLUDES}\")\n\n# \u30b3\u30f3\u30d1\u30a4\u30eb\u30d5\u30e9\u30b0\u306e\u78ba\u8a8d\nget_target_property(TARGET_FLAGS ${PROJECT_NAME} COMPILE_OPTIONS)\nmessage(STATUS \"Compile flags: ${TARGET_FLAGS}\")<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-67\">2. \u30c7\u30d0\u30c3\u30b0\u7528\u306e\u30d8\u30eb\u30d1\u30fc\u95a2\u6570<\/h4>\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\u5168\u30d7\u30ed\u30d1\u30c6\u30a3\u3092\u51fa\u529b\u3059\u308b\u95a2\u6570\nfunction(print_target_properties target)\n    message(STATUS \"Properties for target: ${target}\")\n\n    # \u30d7\u30ed\u30d1\u30c6\u30a3\u306e\u30ea\u30b9\u30c8\u3092\u53d6\u5f97\n    execute_process(\n        COMMAND cmake --help-property-list\n        OUTPUT_VARIABLE CMAKE_PROPERTY_LIST\n    )\n    string(REGEX REPLACE \"[\\n]\" \";\" CMAKE_PROPERTY_LIST \"${CMAKE_PROPERTY_LIST}\")\n\n    foreach(prop ${CMAKE_PROPERTY_LIST})\n        string(REPLACE \"&lt;CONFIG&gt;\" \"${CMAKE_BUILD_TYPE}\" prop ${prop})\n        get_target_property(prop_value ${target} ${prop})\n        if(prop_value)\n            message(STATUS \"${prop} = ${prop_value}\")\n        endif()\n    endforeach()\nendfunction()\n\n# \u4f7f\u7528\u4f8b\nprint_target_properties(${PROJECT_NAME})<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-68\">3. \u30d3\u30eb\u30c9\u30d7\u30ed\u30bb\u30b9\u306e\u8ffd\u8de1<\/h4>\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\u30d3\u30eb\u30c9\u60c5\u5831\u306e\u51fa\u529b\nset(CMAKE_VERBOSE_MAKEFILE ON)\n\n# \u30ab\u30b9\u30bf\u30e0\u30b3\u30de\u30f3\u30c9\u306e\u8ffd\u8de1\nadd_custom_command(\n    OUTPUT ${OUTPUT_FILE}\n    COMMAND ${COMMAND}\n    COMMENT \"Executing command...\"\n    VERBATIM\n    COMMAND_EXPAND_LISTS\n)\n\n# \u30d3\u30eb\u30c9\u30b9\u30c6\u30c3\u30d7\u306e\u30ed\u30b0\nadd_custom_target(build_log\n    COMMAND ${CMAKE_COMMAND} --build . --verbose\n    WORKING_DIRECTORY ${CMAKE_BINARY_DIR}\n)<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-69\">\u30c8\u30e9\u30d6\u30eb\u30b7\u30e5\u30fc\u30c6\u30a3\u30f3\u30b0\u306e\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u30b7\u30b9\u30c6\u30de\u30c6\u30a3\u30c3\u30af\u306a\u30c7\u30d0\u30c3\u30b0\u30a2\u30d7\u30ed\u30fc\u30c1<\/strong><\/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=\"\"># \u30c7\u30d0\u30c3\u30b0\u30e2\u30fc\u30c9\u3067\u306e\u30d3\u30eb\u30c9\u8a2d\u5b9a\nset(CMAKE_BUILD_TYPE Debug)\nadd_compile_definitions(DEBUG_BUILD)\n\n# \u30a8\u30e9\u30fc\u30c1\u30a7\u30c3\u30af\u7528\u306e\u5909\u6570\u8a2d\u5b9a\nset(ENABLE_ERROR_CHECKING ON)\nif(ENABLE_ERROR_CHECKING)\n    add_compile_definitions(ERROR_CHECKING)\nendif()<\/pre>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li><strong>\u30ad\u30e3\u30c3\u30b7\u30e5\u306e\u30af\u30ea\u30fc\u30f3\u30a2\u30c3\u30d7<\/strong><\/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\u30ad\u30e3\u30c3\u30b7\u30e5\u306e\u30af\u30ea\u30a2\u624b\u9806\nrm -rf CMakeCache.txt\nrm -rf CMakeFiles\/\ncmake ..<\/pre>\n\n\n\n<ol start=\"3\" class=\"wp-block-list\">\n<li><strong>\u30a8\u30e9\u30fc\u60c5\u5831\u306e\u53ce\u96c6<\/strong><\/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\u60c5\u5831\u306e\u53ce\u96c6\u7528\u95a2\u6570\nfunction(collect_error_info)\n    file(WRITE ${CMAKE_BINARY_DIR}\/error_info.txt\n        \"CMake Version: ${CMAKE_VERSION}\\n\"\n        \"Generator: ${CMAKE_GENERATOR}\\n\"\n        \"Build Type: ${CMAKE_BUILD_TYPE}\\n\"\n        \"System: ${CMAKE_SYSTEM_NAME}\\n\"\n        \"C++ Compiler: ${CMAKE_CXX_COMPILER}\\n\"\n    )\n\n    if(EXISTS ${CMAKE_BINARY_DIR}\/CMakeFiles\/CMakeError.log)\n        file(READ ${CMAKE_BINARY_DIR}\/CMakeFiles\/CMakeError.log ERROR_LOG)\n        file(APPEND ${CMAKE_BINARY_DIR}\/error_info.txt \"\\nCMake Error Log:\\n${ERROR_LOG}\")\n    endif()\nendfunction()<\/pre>\n\n\n\n<ol start=\"4\" class=\"wp-block-list\">\n<li><strong>\u4f9d\u5b58\u95a2\u4fc2\u306e\u78ba\u8a8d<\/strong><\/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=\"\"># \u4f9d\u5b58\u95a2\u4fc2\u30c1\u30a7\u30c3\u30af\u7528\u306e\u95a2\u6570\nfunction(check_dependencies target)\n    get_target_property(TARGET_DEPS ${target} LINK_LIBRARIES)\n    message(STATUS \"Dependencies for ${target}:\")\n    foreach(dep ${TARGET_DEPS})\n        message(STATUS \"  - ${dep}\")\n        if(TARGET ${dep})\n            get_target_property(DEP_TYPE ${dep} TYPE)\n            get_target_property(DEP_LOCATION ${dep} LOCATION)\n            message(STATUS \"    Type: ${DEP_TYPE}\")\n            message(STATUS \"    Location: ${DEP_LOCATION}\")\n        endif()\n    endforeach()\nendfunction()<\/pre>\n\n\n\n<p>\u3053\u308c\u3089\u306e\u30c8\u30e9\u30d6\u30eb\u30b7\u30e5\u30fc\u30c6\u30a3\u30f3\u30b0\u624b\u6cd5\u3092\u9069\u5207\u306b\u6d3b\u7528\u3059\u308b\u3053\u3068\u3067\u3001CMake\u306b\u95a2\u3059\u308b\u554f\u984c\u3092\u52b9\u7387\u7684\u306b\u89e3\u6c7a\u3067\u304d\u307e\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-1601","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\/1601","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=1601"}],"version-history":[{"count":1,"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=\/wp\/v2\/posts\/1601\/revisions"}],"predecessor-version":[{"id":1602,"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=\/wp\/v2\/posts\/1601\/revisions\/1602"}],"wp:attachment":[{"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1601"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1601"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1601"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}