{"id":3457,"date":"2024-09-08T21:57:00","date_gmt":"2024-09-08T12:57:00","guid":{"rendered":"http:\/\/43.203.250.216\/?p=3457"},"modified":"2024-09-08T21:57:01","modified_gmt":"2024-09-08T12:57:01","slug":"cmake-fetchcontent%ec%9d%98-target%ec%9d%b4-%ec%a4%91%eb%b3%b5%eb%90%98%eb%8a%94-%eb%ac%b8%ec%a0%9c-%ed%9a%8c%ed%94%bc","status":"publish","type":"post","link":"https:\/\/litcoder.com\/?p=3457","title":{"rendered":"CMake FetchContent\uc758 target\uc774 \uc911\ubcf5\ub418\ub294 \ubb38\uc81c"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">CMake\uc758 FetchContent\ub294 \ube4c\ub4dc \uacfc\uc815\uae4c\uc9c0 \ucc98\ub9ac\ud574 \uc8fc\uae30\uc5d0 git-submodule \ubcf4\ub2e4 \ud3b8\ub9ac\ud55c \ubc29\uc2dd\uc778 \uac83 \uac19\ub2e4. \ub2e4\ub9cc, version 3.22.1 \uae30\uc900\uc73c\ub85c \uc5ec\ub7ec \ud504\ub85c\uc81d\ud2b8 \ub4e4\uc774 \ub3d9\uc77c\ud55c target\uc774\ub984\uc744 \uc911\ubcf5\ud574\uc11c \uc120\uc5b8\ud558\ub294 \uacbd\uc6b0\uc5d0\ub294 \uc774\ub97c \uc798 \ucc98\ub9ac \ud558\uc9c0 \ubabb\ud558\uace0 \uc704\uc640 \uac19\uc740 \uc5d0\ub7ec\ub97c \ubc49\uace0 \uc885\ub8cc\ub418\ub294 \ubb38\uc81c\uac00 \uc788\ub2e4.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"dracula\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">-- Found systemd via pkg-config.\nCMake Error at build\/_deps\/grpc-src\/CMakeLists.txt:667 (add_custom_target):\n  add_custom_target cannot create target \"tools\" because another target with\n  the same name already exists.  The existing target is a custom target\n  created in source directory\n  \"&lt;absolute_path_to_the_build_dir>\/_deps\/vsomeip-src\".\n  See documentation for policy CMP0002 for more details.<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc704\uc758 \uc624\ub958\ub294 COVESA\uc758 <a href=\"https:\/\/github.com\/COVESA\/vsomeip\" data-type=\"link\" data-id=\"https:\/\/github.com\/COVESA\/vsomeip\">vsomeip<\/a> project\uc640 <a href=\"https:\/\/github.com\/grpc\/grpc\" data-type=\"link\" data-id=\"https:\/\/github.com\/grpc\/grpc\">gRPC<\/a>\ub97c FetchContent\ub85c \uad6c\uc131\ud558\ub294 \uc911\uc5d0 \ubc1c\uc0dd\ud55c \uac83\uc778\ub370, \ub450 \ud504\ub85c\uc81d\ud2b8 \ubaa8\ub450 &#8220;tools&#8221;\ub77c\ub294 custom target\uc744 \uc120\uc5b8\ud558\uae30 \ub54c\ubb38\uc5d0 \uc911\ubcf5\uc73c\ub85c \uc624\ub958\uac00 \ubc1c\uc0dd\ud55c \uac83\uc774\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc544\uc27d\uac8c\ub3c4 \ud604\uc7ac\ub85c\uc368\ub294 \uae54\ub054\ud558\uac8c \ud574\uacb0\ud558\ub294 \ubc29\ubc95\uc740 \uc5c6\ub294 \uac83 \uac19\uace0, \ub450 \ud504\ub85c\uc81d\ud2b8 \uc911 \ud558\ub098\uc758 custom target \uc774\ub984\uc744 \ubcc0\uacbd\ud574\uc11c \uc911\ubcf5\ub418\uc9c0 \uc54a\ub3c4\ub85d \ud574 \uc8fc\ub294 \ud328\uce58\ub97c \uc791\uc131\ud574\uc11c FetchContent\uc758 PATCH_COMMAND\uc5d0 \uc778\uc790\ub85c \ub123\uc5b4\uc8fc\ub294 \ubc29\ubc95\uc73c\ub85c \ud68c\ud53c\uac00 \uac00\ub2a5\ud558\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uba3c\uc800 vsomeip project\uc758 custom target\uc778 tools\ub97c vsomeip_tools\ub85c \ubcc0\uacbd\ud558\ub294 \ud328\uce58\ub97c \ub2e4\uc74c\uacfc \uac19\uc774 \uc791\uc131\ud558\uace0 fix_custom_target.patch\ub85c \uc800\uc7a5\ud55c\ub2e4.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"diff\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">diff --git a\/CMakeLists.txt b\/CMakeLists.txt\nindex 3501e02..0467426 100644\n--- a\/CMakeLists.txt\n+++ b\/CMakeLists.txt\n@@ -654,7 +654,7 @@ add_subdirectory( examples\/routingmanagerd )\n endif()\n \n # build tools\n-add_custom_target( tools )\n+add_custom_target( vsomeip_tools )\n add_subdirectory( tools )\n \n # build examples\n-- \n2.34.1\n<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ub2e4\uc74c\uc73c\ub85c FetchConetnet\uc5d0 PATCH_COMMAND argument\ub97c \uba85\uc2dc\ud55c\ub2e4.<\/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=\"\"># VSOME\/IP\nset(\n    fix_custom_target\n    git apply ${CMAKE_CURRENT_SOURCE_DIR}\/fix_custom_target.patch\n)\nFetchContent_Declare(\n    vsomeip\n    GIT_REPOSITORY https:\/\/github.com\/COVESA\/vsomeip.git\n    GIT_TAG &lt;GIT_TAG>\n    PATCH_COMMAND ${fix_custom_target}\n)\n\nFetchContent_MakeAvailable(vsomeip gRPC)<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc774\uc81c cmake\ub97c \uc2e4\ud589\ud558\uba74 patch\uac00 \uc801\uc6a9\ub418\uc5b4 \uc911\ubcf5\ub418\ub294 target \uc774\ub984 \ubb38\uc81c\ub97c \ud574\uacb0\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ud558\uc9c0\ub9cc \uc774 \ud574\uacb0\ucc45\uc740 \uc544\uc9c1 \uae54\ub054\ud558\uc9c4 \uc54a\uc740\ub370 \uadf8 \uc774\uc720\ub294 \ucc98\uc74c cmake\ub97c \uc2e4\ud589\ud558\uba74 patch\uac00 \uc801\uc6a9\ub418\uba74\uc11c \uc798 \ub418\uc9c0\ub9cc \ub450\ubc88\uc9f8\ub85c cmake\ub97c \uc2e4\ud589 \ud560 \ub54c\ub294 \uc774\ubbf8 \uc801\uc6a9\ub41c patch \ub54c\ubb38\uc5d0 git apply \uba85\ub839\uc5b4\uac00 \uc2e4\ud328 \ud558\uae30 \ub54c\ubb38\uc5d0 \ub9e4\ubc88 patch\uac00 \uc801\uc6a9\ub41c directory(_deps\/vsomeip-src)\ub85c \uc774\ub3d9\ud574\uc11c git checkout -f\ub97c \uc2e4\ud589\ud574 \uc8fc\uc5b4\uc57c \ud558\uae30 \ub54c\ubb38\uc774\ub2e4.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\ucd5c\uc885\ubc84\uc804<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">git apply\uc758 &#8211;reverse &#8211;check \uc635\uc158\uc744 \uc0ac\uc6a9\ud558\uba74 \ud328\uce58\uac00 \uc801\uc6a9\ub418\uc5b4 \uc788\ub294\uc9c0 \uc5ec\ubd80\ub97c \uac80\uc0ac\ud560 \uc218 \uc788\uc73c\ub2c8 \uc774 \uac83\uc744 \uc774\uc6a9\ud574\uc11c \ub2e4\uc74c\uacfc \uac19\uc740 \uac04\ub2e8\ud55c shell script\ub97c \ub9cc\ub4e4\uace0 apply_patch_if_not.sh\ub85c \uc800\uc7a5\ud55c\ub2e4.<\/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=\"\">#!\/usr\/bin\/env sh\n# apply_patch_if_not.sh\n# Apply given patch if not already applied.\n#\n#                         - Sep 2024, litcoder\n\nif [ -z $1 ]; then\n  echo \"Usage: $0 &lt;patch file path>\"\n  exit 1\nfi\n\n# Check if the patch was already applied.\ngit apply --reverse --check $1\nif [ $? -eq 0 ]; then\n  echo \"The patch already applied, skip.\"\n  exit 0\nelse\n  # Apply the patch\n  git apply $1\nfi<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc774\uc81c \uc55e\uc5d0\uc11c \uc791\uc131\ud55c FetchContent_Declare\uac00 \uc774 script\ub97c \ubd80\ub974\ub3c4\ub85d \ubcc0\uacbd\ud55c\ub2e4.<\/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=\"\"># VSOME\/IP\nset(\n    fix_custom_target\n    apply_patch_if_not.sh ${CMAKE_CURRENT_SOURCE_DIR}\/fix_custom_target.patch\n)\nFetchContent_Declare(\n    vsomeip\n    GIT_REPOSITORY https:\/\/github.com\/COVESA\/vsomeip.git\n    GIT_TAG &lt;GIT_TAG>\n    PATCH_COMMAND ${fix_custom_target}\n)\n\nFetchContent_MakeAvailable(vsomeip gRPC)<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>CMake\uc758 FetchContent\ub294 \ube4c\ub4dc \uacfc\uc815\uae4c\uc9c0 \ucc98\ub9ac\ud574 \uc8fc\uae30\uc5d0 git-submodule \ubcf4\ub2e4 \ud3b8\ub9ac\ud55c \ubc29\uc2dd\uc778 \uac83 \uac19\ub2e4. \ub2e4\ub9cc, version 3.22.1 \uae30\uc900\uc73c\ub85c \uc5ec\ub7ec \ud504\ub85c\uc81d\ud2b8 \ub4e4\uc774 \ub3d9\uc77c\ud55c target\uc774\ub984\uc744 \uc911\ubcf5\ud574\uc11c \uc120\uc5b8\ud558\ub294 \uacbd\uc6b0\uc5d0\ub294 \uc774\ub97c \uc798 \ucc98\ub9ac \ud558\uc9c0 \ubabb\ud558\uace0 \uc704\uc640 \uac19\uc740 \uc5d0\ub7ec\ub97c \ubc49\uace0 \uc885\ub8cc\ub418\ub294 \ubb38\uc81c\uac00 \uc788\ub2e4. \uc704\uc758 \uc624\ub958\ub294 COVESA\uc758 vsomeip project\uc640 gRPC\ub97c FetchContent\ub85c \uad6c\uc131\ud558\ub294 \uc911\uc5d0 \ubc1c\uc0dd\ud55c \uac83\uc778\ub370, \ub450 \ud504\ub85c\uc81d\ud2b8 \ubaa8\ub450 &#8220;tools&#8221;\ub77c\ub294 custom target\uc744 \uc120\uc5b8\ud558\uae30 \ub54c\ubb38\uc5d0 [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_feature_clip_id":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_post_was_ever_published":false},"categories":[6],"tags":[322,327,326,330,328],"class_list":["post-3457","post","type-post","status-publish","format-standard","hentry","category-tools","tag-cmake","tag-custom_target","tag-fetchcontent","tag-grpc","tag-push_command"],"jetpack_sharing_enabled":true,"jetpack-related-posts":[{"id":3392,"url":"https:\/\/litcoder.com\/?p=3392","url_meta":{"origin":3457,"position":0},"title":"VSCode\uc5d0\uc11c GTest \ud14c\uc2a4\ud2b8 \ud56d\ubaa9 \ud45c\uc2dc\ud558\uae30","author":"litcoder","date":"2024\ub144 4\uc6d4 20\uc77c","format":false,"excerpt":"VSCode\uc758 Test Explorer\uc5d0 test case\ub4e4\uc744 \ud45c\uc2dc\ud558\uba74 \uadc0\ucc2e\uc740 \ud30c\ub77c\ubbf8\ud130 \uc785\ub825 \uc5c6\uc774\ub3c4 \ud2b9\uc815 \ud14c\uc2a4\ud2b8\ucf00\uc774\uc2a4\ub97c \uc2e4\ud589\ud558\uac70\ub098 \ub514\ubc84\uadf8\ud560 \uc218 \uc788\uc5b4\uc11c \uc5ec\ub7ec\ubaa8\ub85c \ud3b8\ub9ac\ud55c \uc810\uc774 \ub9ce\ub2e4. \ud558\uc9c0\ub9cc GTest\ub85c \uc791\uc131\ud55c C++ \ud14c\uc2a4\ud2b8\ucf00\uc774\uc2a4\ub4e4\uc740 \uc790\ub3d9\uc73c\ub85c discover\ub418\uc9c0 \uc54a\uc544\uc11c \uc57d\uac04\uc758 \uc124\uc815\uc744 \ud574\uc8fc\uc5b4\uc57c \ud55c\ub2e4. \ubcf5\uc7a1\ud55c \uac83\uc740 \uc544\ub2c8\uace0 \uc544\ub798\uc640 \uac19\uc774 GTest\uc5d0\uc11c \uc81c\uacf5\ud558\ub294 CMake \ud568\uc218\uc778 gtest_discover_tests()\ub97c \uc774\uc6a9\ud558\uba74 \ub41c\ub2e4. # Allow ctest to discover unittests.\u2026","rel":"","context":"&quot;Tools &amp; Tips&quot;\uc5d0\uc11c","block_context":{"text":"Tools &amp; Tips","link":"https:\/\/litcoder.com\/?cat=6"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/litcoder.com\/wp-content\/uploads\/2024\/04\/vscode_gtest_explorer.png?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]},{"id":1021,"url":"https:\/\/litcoder.com\/?p=1021","url_meta":{"origin":3457,"position":1},"title":"Emacs\uc5d0\uc11c Android \uac1c\ubc1c \ud658\uacbd \uc0ac\uc6a9","author":"litcoder","date":"2014\ub144 8\uc6d4 10\uc77c","format":false,"excerpt":"AOSP\uc5d0\ub294 Emacs\uc5d0\uc11c Android \uac1c\ubc1c\ud658\uacbd\uc744 \uc0ac\uc6a9\ud560 \uc218 \uc788\ub3c4\ub85d \uba87\uba87 el file\ub4e4\uc744 \uc81c\uacf5\ud558\ub294\ub370, platform \u00a0module build\ub97c \uc8fc\ub85c \ud558\uac8c \ub418\ub294 \ub098\ub85c\uc368\ub294 \uc0ac\uc6a9\uc5d0 \ubd80\uc871\ud568\uc774 \uc5c6\ub294 \uac83 \uac19\ub2e4. Module build\uc640 \uae30\ubcf8\uc801\uc778 ADB \uc870\uc791\uc744 \uc9c0\uc6d0\ud558\ub294 \uc774 script\ub4e4\uc758 \uae30\ub2a5\uc774 \ubd80\uc871\ud558\ub2e4\uace0 \ub290\ub080\ub2e4\uba74 Android \uac1c\ubc1c\ud658\uacbd\uc744 \ubcf4\ub2e4 \uc801\uadf9\uc801\uc73c\ub85c \uc9c0\uc6d0\ud558\ub294\u00a0android-mode\uc640 \uac19\uc740 project\ub97c \uace0\ub824\ud574 \ubcf4\ub294\uac83\ub3c4 \uc88b\uc744 \uac83\uc774\ub2e4. buildspec.mk \uc124\uc815 \uc0ac\uc2e4 \uc774 \uae30\ub2a5\uc740\u2026","rel":"","context":"&quot;Android&quot;\uc5d0\uc11c","block_context":{"text":"Android","link":"https:\/\/litcoder.com\/?cat=2"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":3957,"url":"https:\/\/litcoder.com\/?p=3957","url_meta":{"origin":3457,"position":2},"title":"Raspberry Pi\uc6a9 Qt5 Cross Compile","author":"litcoder","date":"2025\ub144 12\uc6d4 24\uc77c","format":false,"excerpt":"\uc774 \ud3ec\uc2a4\ud305\uc740 Qt5 5.15.11\uc744 RPi5\uc6a9\uc73c\ub85c \ud06c\ub85c\uc2a4 \ucef4\ud30c\uc77c \ud558\ub294 \uacfc\uc815\uc744 \uc815\ub9ac\ud55c \uac83\uc774\ub2e4. Build host\ub294 Ubuntu 24.04\uc774\ub2e4. Overview 2025\ub144 12\uc6d4 \ud604\uc7ac, Qt5\uac00 RPi\uc6a9 deb package \uc0dd\uc131\uc744 \uc9c1\uc811 \uc9c0\uc6d0\ud558\uc9c0\ub294 \uc54a\uae30 \ub54c\ubb38\uc5d0 \ub2e4\uc18c \ubcf5\uc7a1\ud558\uace0 \ubc88\uac70\ub86d\uae34 \ud558\uc9c0\ub9cc, target\uc778 Raspberry Pi OS\uc758 image \ud30c\uc77c\uc744 \ube4c\ub4dc \ud638\uc2a4\ud2b8 \uba38\uc2e0\uc5d0 loop device\ub85c \ub9c8\uc6b4\ud2b8 \uc2dc\ucf1c\uc11c \ud06c\ub85c\uc2a4 \ucef4\ud30c\uc77c\uc744 \uc218\ud589\ud558\uace0 \uadf8 \uacb0\uacfc\ub97c\u2026","rel":"","context":"&quot;Linux&quot;\uc5d0\uc11c","block_context":{"text":"Linux","link":"https:\/\/litcoder.com\/?cat=4"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/litcoder.com\/wp-content\/uploads\/2025\/12\/qt5_raspios_mount.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/litcoder.com\/wp-content\/uploads\/2025\/12\/qt5_raspios_mount.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/litcoder.com\/wp-content\/uploads\/2025\/12\/qt5_raspios_mount.png?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/litcoder.com\/wp-content\/uploads\/2025\/12\/qt5_raspios_mount.png?resize=700%2C400&ssl=1 2x, https:\/\/i0.wp.com\/litcoder.com\/wp-content\/uploads\/2025\/12\/qt5_raspios_mount.png?resize=1050%2C600&ssl=1 3x"},"classes":[]},{"id":1760,"url":"https:\/\/litcoder.com\/?p=1760","url_meta":{"origin":3457,"position":3},"title":"Travis CI \uc124\uc815\uacfc docker image \uc0ac\uc6a9","author":"litcoder","date":"2019\ub144 1\uc6d4 14\uc77c","format":false,"excerpt":"GitHub project\uc5d0 CI\ub97c \ubd99\uc774\uace0 \uc2f6\uc740\ub370 Jenkins server\uac00 \ud68c\uc0ac firewall \uc548\uc5d0 \ub4e4\uc5b4 \uc788\uc5b4\uc11c GitHub\uc5d0\uc11c \uc9c1\uc811 webhook\uc744 \ubd99\uc77c \uc218 \uc5c6\ub294 \ubb38\uc81c\uac00 \uc788\ub2e4. Jenkins\uc758 GitHub plugin\uc73c\ub85c tunneling\uc744 \uc124\uc815\ud558\ub294 \ubc29\ubc95 \ub4f1 \uc788\uae30\ub294 \ud558\uc9c0\ub9cc \ub2e4\ub978 CI \uc635\uc158\ub4e4\uc744 \uc0b4\ud3b4 \ubcf4\ub358\uc911 Open source project\uc5d0 \ub300\ud574\uc11c\ub294 \ubb34\ub8cc\ub77c\ub294\u00a0Travis CI\uac00 \uc788\ub2e4\ub294 \uac83\uc744 \uc54c\uac8c \ub418\uc5c8\ub2e4. Travis CI\ub294 \uae30\ubcf8\uc73c\ub85c Ubuntu\ub97c \uc9c0\uc6d0\ud558\uace0 \uadf8\u2026","rel":"","context":"&quot;Programming&quot;\uc5d0\uc11c","block_context":{"text":"Programming","link":"https:\/\/litcoder.com\/?cat=5"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":1034,"url":"https:\/\/litcoder.com\/?p=1034","url_meta":{"origin":3457,"position":4},"title":"Android emacs (android-host.el) \uae30\ub2a5 \ucd94\uac00","author":"litcoder","date":"2014\ub144 8\uc6d4 27\uc77c","format":false,"excerpt":"AOSP\uc5d0\uc11c \uc81c\uacf5\ub418\ub294 Emacs\uc6a9 Andorid \uac1c\ubc1c\ud658\uacbd\uc744 \uc124\uc815\ud55c \uc774\ud6c4(\uc774 post \ucc38\uc870) \uc798 \ubaa8\ub974\ub294 LISP\uc744 \ub354\ub4ec\uc5b4 \uac00\uba70 \ucd94\uac00\ud55c \uba87 \uac00\uc9c0 \uae30\ub2a5\uc744 \uc18c\uac1c\ud569\ub2c8\ub2e4. adb reboot (M-x android-adb-reboot) Module\ub4f1\uc744 \ubcc0\uacbd\ud55c \ud6c4\uc5d0 device\ub97c reset\ud558\ub294 \uba85\ub839\uc5b4\uac00 \uc5c6\uc5b4\uc11c \ucd94\uac00\ud588\ub2e4. \uc774 \uae30\ub2a5\uc758 \uc7a5\uc810\uc744 \uad73\uc774 \uaf3d\uc790\uba74 shell\uc744 \ub530\ub85c \ub6f0\uc6b0\uc9c0 \uc54a\uace0 \ub9ac\ubd93\uc744 \ud560\uc218 \uc788\ub2e4\ub294\uac70... (defun android-adb-reboot () \"Execute 'adb reboot'.\" (interactive)\u2026","rel":"","context":"&quot;Android&quot;\uc5d0\uc11c","block_context":{"text":"Android","link":"https:\/\/litcoder.com\/?cat=2"},"img":{"alt_text":"icon_text_file","src":"https:\/\/i0.wp.com\/litcoder.com\/wp-content\/uploads\/2014\/08\/1408382052_12.File_.png?resize=350%2C200","width":350,"height":200},"classes":[]},{"id":1475,"url":"https:\/\/litcoder.com\/?p=1475","url_meta":{"origin":3457,"position":5},"title":"Android recovery image \ube4c\ub4dc \uc124\uc815","author":"litcoder","date":"2022\ub144 3\uc6d4 5\uc77c","format":false,"excerpt":"1. BoardConfig.mk \uc218\uc815 TARGET_NO_KERNEL\uacfc TARGET_NO_RECOVERY\uac00 true\ub85c \uc124\uc815\ub418\uc5b4 \uc788\ub2e4\uba74 \uc124\uc815\ud55c\ub2e4. 2. device.mk \uc218\uc815 TARGET_PREBUILT_KERNEL\uad00\ub828 \uc124\uc815\uc744 \uc0ad\uc81c\ud55c\ub2e4. 3. AndroidBoard.mk \ucd94\uac00 Kernel build \ub420 \ub54c \ucc38\uace0\ub418\ub294 \ud30c\uc77c\uc774\ubbc0\ub85c \ucd94\uac00\ud574 \uc8fc\uace0 KERNEL_DEFCONFIG\ub4f1\uc758 \uc124\uc815\uc744 \uc790\uc2e0\uc5d0 \ub9de\uac8c \ubcc0\uacbd\ud574 \uc900\ub2e4. 4. AndroidKernel.mk \ucd94\uac00 AndroidKernel.mk\ub294 kernel build\ub97c \uc704\ud55c makefile script\uc774\ub2e4. 5. defconfig file \uacbd\ub85c\ubcc0\uacbd defconfig file\uc774 \ucc38\uc870\ub420 \uc218 \uc788\ub3c4\ub85d\u2026","rel":"","context":"&quot;Android&quot;\uc5d0\uc11c","block_context":{"text":"Android","link":"https:\/\/litcoder.com\/?cat=2"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]}],"jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/litcoder.com\/index.php?rest_route=\/wp\/v2\/posts\/3457","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/litcoder.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/litcoder.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/litcoder.com\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/litcoder.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=3457"}],"version-history":[{"count":9,"href":"https:\/\/litcoder.com\/index.php?rest_route=\/wp\/v2\/posts\/3457\/revisions"}],"predecessor-version":[{"id":3470,"href":"https:\/\/litcoder.com\/index.php?rest_route=\/wp\/v2\/posts\/3457\/revisions\/3470"}],"wp:attachment":[{"href":"https:\/\/litcoder.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=3457"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/litcoder.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=3457"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/litcoder.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=3457"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}