{"id":37084,"date":"2019-10-31T22:15:40","date_gmt":"2019-10-31T19:15:40","guid":{"rendered":"https:\/\/prohoster.info\/blog\/c-i-cmake-bratya-navek-chast-ii\/"},"modified":"2019-10-31T22:15:40","modified_gmt":"2019-10-31T19:15:40","slug":"c-i-cmake-bratya-navek-chast-ii","status":"publish","type":"post","link":"https:\/\/prohoster.info\/sv\/blog\/administrirovanie\/c-i-cmake-bratya-navek-chast-ii","title":{"rendered":"C++ och CMake \u2014 br\u00f6der f\u00f6r alltid, del II","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"C++ och CMake \u2014 br\u00f6der f\u00f6r alltid, del II\" src=\"\/wp-content\/uploads\/2019\/08\/1d86b8b1668ae29ff3e634df9059d9b1.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/461817\/\">I den f\u00f6reg\u00e5ende delen<\/a><\/noindex> av denna underh\u00e5llande ber\u00e4ttelse talades det om organisationen av en header-bibliotek inom ramen f\u00f6r CMake-byggsystemet.<\/p>\n<p><\/p>\n<p>Denna g\u00e5ng l\u00e4gger vi till ett kompilera-bibliotek, och pratar om hur moduler ska kopplas samman.<\/p>\n<p><\/p>\n<blockquote><p>Som tidigare, f\u00f6r de som inte kan v\u00e4nta, kan ni omedelbart <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/izvolov\/mylib\">g\u00e5 till det uppdaterade arkivet<\/a><\/noindex> och utforska allt med egna h\u00e4nder.<\/p><\/blockquote>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\n<noindex><a rel=\"nofollow\" name=\"contents\"><\/a><\/noindex><\/p>\n<h2>Inneh\u00e5ll<\/h2>\n<p><\/p>\n<ol>\n<li><noindex><a rel=\"nofollow\" href=\"#divide\">Dela<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"#impera\">H\u00e4rska<\/a><\/noindex><\/li>\n<\/ol>\n<p>\n<noindex><a rel=\"nofollow\" name=\"divide\"><\/a><\/noindex><\/p>\n<h2><noindex><a rel=\"nofollow\" href=\"#contents\">Dela<\/a><\/noindex><\/h2>\n<p><\/p>\n<p>Det f\u00f6rsta steget f\u00f6r att n\u00e5 v\u00e5rt h\u00f6ga m\u00e5l \u00e4r att dela den utvecklade mjukvaran i universella isolerade block, som \u00e4r enhetliga sett ur anv\u00e4ndarens perspektiv.<\/p>\n<p><\/p>\n<p>I den f\u00f6rsta delen beskrev vi en s\u00e5dan standardblock - ett projekt med en header-bibliotek. Nu l\u00e4gger vi till ett kompilera-bibliotek i v\u00e5rt projekt.<\/p>\n<p><\/p>\n<p>F\u00f6r detta kommer vi att flytta implementeringen av funktionen <code>myfunc<\/code> till en separat <code>.cpp<\/code>-fil:<\/p>\n<p><\/p>\n<pre><code class=\"diff\">diff --git a\/include\/mylib\/myfeature.hpp b\/include\/mylib\/myfeature.hpp\nindex 43db388..ba62b4f 100644\n--- a\/include\/mylib\/myfeature.hpp\n+++ b\/include\/mylib\/myfeature.hpp\n@@ -46,8 +46,5 @@ namespace mylib\n\n         ~  see mystruct\n      * \/\n-    inline bool myfunc (mystruct)\n-    {\n-        return true;\n-    }\n+    bool myfunc (mystruct);\n }\ndiff --git a\/src\/mylib\/myfeature.cpp b\/src\/mylib\/myfeature.cpp\nnew file mode 100644\nindex 0000000..abb5004\n--- \/dev\/null\n+++ b\/src\/mylib\/myfeature.cpp\n@@ -0,0 +1,9 @@\n+#include \n+\n+namespace mylib\n+{\n+    bool myfunc (mystruct)\n+    {\n+        return true;\n+    }\n+}<\/code><\/pre>\n<p><\/p>\n<p>D\u00e4refter definierar vi kompilera-biblioteket (<code>myfeature<\/code>), som kommer att best\u00e5 av den fil som ficks fr\u00e5n f\u00f6reg\u00e5ende steg. <code>.cpp<\/code>Det nya biblioteket beh\u00f6ver uppenbarligen redan existerande headers, och f\u00f6r att tillhandah\u00e5lla detta kan och b\u00f6r vi koppla det till den befintliga m\u00e5let <code>mylib<\/code>. Kopplingen mellan dem \u00e4r offentlig, vilket inneb\u00e4r att allt som kopplas till m\u00e5let <code>myfeature<\/code>, automatiskt kommer att f\u00e5 med sig den m\u00e5let <code>mylib<\/code> (<noindex><a rel=\"nofollow\" href=\"https:\/\/cmake.org\/cmake\/help\/v3.14\/command\/target_link_libraries.html#libraries-for-a-target-and-or-its-dependents\">l\u00e4s mer om kopplingsmetoder<\/a><\/noindex>). <\/p>\n<p><\/p>\n<pre><code class=\"diff\">diff --git a\/CMakeLists.txt b\/CMakeLists.txt\nindex 108045c..0de77b8 100644\n--- a\/CMakeLists.txt\n+++ b\/CMakeLists.txt\n@@ -64,6 +64,17 @@ target_compile_features(mylib INTERFACE cxx_std_17)\n\n add_library(Mylib::mylib ALIAS mylib)\n\n+###################################################################################################\n+##\n+##      Kompilera-bibliotek\n+##\n+###################################################################################################\n+\n+add_library(myfeature src\/mylib\/myfeature.cpp)\n+target_link_libraries(myfeature PUBLIC mylib)\n+\n+add_library(Mylib::myfeature ALIAS myfeature)\n+<\/code><\/pre>\n<p><\/p>\n<p>Sedan g\u00f6r vi s\u00e5 att det nya biblioteket ocks\u00e5 installeras i systemet:<\/p>\n<p><\/p>\n<pre><code class=\"diff\">@@ -72,7 +83,7 @@ add_library(Mylib::mylib ALIAS mylib)\n\n install(DIRECTORY include\/mylib DESTINATION include)\n\n-install(TARGETS mylib EXPORT MylibConfig)\n+install(TARGETS mylib myfeature EXPORT MylibConfig)\n install(EXPORT MylibConfig NAMESPACE Mylib:: DESTINATION share\/Mylib\/cmake)\n\n include(CMakePackageConfigHelpers)<\/code><\/pre>\n<p><\/p>\n<p>Det \u00e4r viktigt att notera att f\u00f6r m\u00e5let <code>myfeature<\/code>, liksom f\u00f6r <code>mylib<\/code> en pseudonym med prefixet <code>Mylib::<\/code>. Detsamma anges f\u00f6r b\u00e5da m\u00e5len n\u00e4r de exporteras f\u00f6r installation i systemet. Detta m\u00f6jligg\u00f6r enhetlig hantering av m\u00e5len under alla <noindex><a rel=\"nofollow\" href=\"#impera\">bindningsscheman<\/a><\/noindex>.<\/p>\n<p><\/p>\n<p>Efter detta \u00e5terst\u00e5r det att koppla samman modul-tester med det nya biblioteket (funktionen <code>myfunc<\/code> har flyttats fr\u00e5n headern, s\u00e5 nu beh\u00f6ver vi l\u00e4nka):<\/p>\n<p><\/p>\n<pre><code class=\"diff\">diff --git a\/test\/CMakeLists.txt b\/test\/CMakeLists.txt\nindex 5620be4..bc1266c 100644\n--- a\/test\/CMakeLists.txt\n+++ b\/test\/CMakeLists.txt\n@@ -4,7 +4,7 @@ add_executable(mylib-unit-tests test_main.cpp)\n target_sources(mylib-unit-tests PRIVATE mylib\/myfeature.cpp)\n target_link_libraries(mylib-unit-tests\n     PRIVATE\n-        Mylib::mylib\n+        Mylib::myfeature\n         doctest::doctest\n )<\/code><\/pre>\n<p><\/p>\n<p>Rubriker (<code>Mylib::mylib<\/code>) beh\u00f6ver nu inte kopplas separat, f\u00f6r som redan n\u00e4mnts, kopplas de automatiskt ihop med biblioteket (<code>Mylib::myfeature<\/code>).<\/p>\n<p><\/p>\n<p>Och vi l\u00e4gger till n\u00e5gra detaljer f\u00f6r att s\u00e4kerst\u00e4lla m\u00e4tningar av t\u00e4ckningen med det nyligen tillkomna biblioteket:<\/p>\n<p><\/p>\n<pre><code class=\"diff\">@@ -15,11 +15,16 @@ if(MYLIB_COVERAGE AND GCOVR_EXECUTABLE)\n     target_compile_options(mylib-unit-tests PRIVATE --coverage)\n     target_link_libraries(mylib-unit-tests PRIVATE gcov)\n\n+    target_compile_options(myfeature PRIVATE --coverage)\n+    target_link_libraries(myfeature PRIVATE gcov)\n+\n     add_custom_target(coverage\n         COMMAND\n             ${GCOVR_EXECUTABLE}\n-                --root=${PROJECT_SOURCE_DIR}\/include\/\n-                --object-directory=${CMAKE_CURRENT_BINARY_DIR}\n+                --root=${PROJECT_SOURCE_DIR}\/\n+                --filter=${PROJECT_SOURCE_DIR}\/include\n+                --filter=${PROJECT_SOURCE_DIR}\/src\n+                --object-directory=${PROJECT_BINARY_DIR}\n         DEPENDS\n             check\n     )<\/code><\/pre>\n<p><\/p>\n<p>Man kan l\u00e4gga till fler bibliotek, k\u00f6rbara filer och s\u00e5 vidare. Det spelar ingen roll hur de \u00e4r kopplade till varandra inom projektet. Det viktiga \u00e4r bara vilka m\u00e5l som \u00e4r gr\u00e4nssnittet f\u00f6r v\u00e5r modul, det vill s\u00e4ga de som \u00e4r exponerade.<\/p>\n<p>\n<noindex><a rel=\"nofollow\" name=\"impera\"><\/a><\/noindex><\/p>\n<h2><noindex><a rel=\"nofollow\" href=\"#contents\">H\u00e4rska<\/a><\/noindex><\/h2>\n<p><\/p>\n<p>Nu har vi standardmoduler och vi kan kontrollera dem: skapa en struktur av valfri komplexitet av dem, installera dem i systemet eller l\u00e4nka dem samman inom en enda byggsystem.<\/p>\n<p><\/p>\n<h3 id=\"ustanovka-v-sistemu\">Installation i systemet<\/h3>\n<p><\/p>\n<p>Ett alternativ f\u00f6r att anv\u00e4nda modulen \u00e4r att installera v\u00e5r modul i systemet.<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">cmake --build path\/to\/build\/directory --target install<\/code><\/pre>\n<p><\/p>\n<p>Efter detta kopplas den in i vilket annat projekt som helst med kommandot <noindex><a rel=\"nofollow\" href=\"https:\/\/cmake.org\/cmake\/help\/v3.14\/command\/find_package.html\"><code>find_package<\/code><\/a><\/noindex>.<\/p>\n<p><\/p>\n<pre><code class=\"cmake\">find_package(Mylib 1.0 REQUIRED)<\/code><\/pre>\n<p><\/p>\n<h3 id=\"podklyuchenie-v-kachestve-podmodulya\">Koppling som en under-modul<\/h3>\n<p><\/p>\n<p>Ett annat alternativ \u00e4r att koppla mappen med v\u00e5rt projekt till ett annat projekt som en under-modul med kommandot <noindex><a rel=\"nofollow\" href=\"https:\/\/cmake.org\/cmake\/help\/v3.14\/command\/add_subdirectory.html\"><code>add_subdirectory<\/code><\/a><\/noindex>.<\/p>\n<p><\/p>\n<h3 id=\"ispolzovanie\">Anv\u00e4ndning<\/h3>\n<p><\/p>\n<p>Bindningsmetoderna \u00e4r olika, men resultatet \u00e4r detsamma. I b\u00e5da fallen kommer m\u00e5len som anv\u00e4nder v\u00e5r modul att vara tillg\u00e4ngliga i projektet <code>Mylib::myfeature<\/code> och <code>Mylib::mylib<\/code>, som kan anv\u00e4ndas till exempel s\u00e5 h\u00e4r:<\/p>\n<p><\/p>\n<pre><code class=\"cmake\">add_executable(some_executable some.cpp sources.cpp)\ntarget_link_libraries(some_executable PRIVATE Mylib::myfeature)<\/code><\/pre>\n<p><\/p>\n<p>I v\u00e5rt specifika fall biblioteket <code>Mylib::myfeature<\/code> m\u00e5ste kopplas in n\u00e4r det \u00e4r n\u00f6dv\u00e4ndigt att l\u00e4nka med biblioteket <code>libmyfeature<\/code>. Om det r\u00e4cker med headerfiler, b\u00f6r d\u00e5 biblioteket anv\u00e4ndas <code>Mylib::mylib<\/code>.<\/p>\n<p><\/p>\n<p>CMake-m\u00e5l kan vara knepiga, till exempel avsedda endast f\u00f6r att vidarebefordra vissa egenskaper, beroenden och s\u00e5 vidare. Arbetet med dem sker p\u00e5 ett enhetligt s\u00e4tt.<\/p>\n<p><\/p>\n<p>Det som kr\u00e4vdes att uppn\u00e5.<\/p>\n<p>K\u00e4lla: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/463295\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0412 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u0447\u0430\u0441\u0442\u0438 \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u0437\u0430\u043d\u0438\u043c\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430 \u0433\u043e\u0432\u043e\u0440\u0438\u043b\u043e\u0441\u044c \u043e\u0431 \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u0438 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u0447\u043d\u043e\u0439 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u0430 \u0441\u0438\u0441\u0442\u0435\u043c \u0441\u0431\u043e\u0440\u043a\u0438 CMake. \u0412 \u044d\u0442\u043e\u0442 \u0440\u0430\u0437 \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u043a \u043d\u0435\u043c\u0443 \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u0435\u043c\u0443\u044e \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043f\u043e\u0433\u043e\u0432\u043e\u0440\u0438\u043c \u043e \u043a\u043e\u043c\u043f\u043e\u043d\u043e\u0432\u043a\u0435 \u043c\u043e\u0434\u0443\u043b\u0435\u0439 \u0434\u0440\u0443\u0433 \u0441 \u0434\u0440\u0443\u0433\u043e\u043c. \u041a\u0430\u043a \u0438 \u043f\u0440\u0435\u0436\u0434\u0435, \u0442\u0435\u043c, \u043a\u043e\u043c\u0443 \u043d\u0435 \u0442\u0435\u0440\u043f\u0438\u0442\u0441\u044f, \u043c\u043e\u0433\u0443\u0442 \u0441\u0440\u0430\u0437\u0443 \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u0432 \u043e\u0431\u043d\u043e\u0432\u043b\u0451\u043d\u043d\u044b\u0439 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 \u0438 \u043f\u043e\u0442\u0440\u043e\u0433\u0430\u0442\u044c \u0432\u0441\u0451 \u0441\u0432\u043e\u0438\u043c\u0438 \u0440\u0443\u043a\u0430\u043c\u0438. \u0421\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0435 \u0420\u0430\u0437\u0434\u0435\u043b\u044f\u0439 \u0412\u043b\u0430\u0441\u0442\u0432\u0443\u0439 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":27802,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-37084","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.4 - aioseo.com -->\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/sv\/blog\/administrirovanie\/c-i-cmake-bratya-navek-chast-ii\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.4\" \/>\n\t\t<meta property=\"og:locale\" content=\"sv_SE\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47C++ \u0438 CMake \u2014 \u0431\u0440\u0430\u0442\u044c\u044f \u043d\u0430\u0432\u0435\u043a, \u0447\u0430\u0441\u0442\u044c II | ProHoster\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/sv\/blog\/administrirovanie\/c-i-cmake-bratya-navek-chast-ii\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-10-31T19:15:40+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T19:15:40+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47C++ och CMake \u2014 br\u00f6der f\u00f6r alltid, del II | ProHoster","description":"","canonical_url":"https:\/\/prohoster.info\/sv\/blog\/administrirovanie\/c-i-cmake-bratya-navek-chast-ii","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"sv_SE","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47C++ \u0438 CMake \u2014 \u0431\u0440\u0430\u0442\u044c\u044f \u043d\u0430\u0432\u0435\u043a, \u0447\u0430\u0441\u0442\u044c II | ProHoster","og:url":"https:\/\/prohoster.info\/sv\/blog\/administrirovanie\/c-i-cmake-bratya-navek-chast-ii","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-10-31T19:15:40+00:00","article:modified_time":"2019-10-31T19:15:40+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"37084","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-22 06:02:22","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 01:33:25","updated":"2026-01-22 06:02:22","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/posts\/37084","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/comments?post=37084"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/posts\/37084\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/media\/27802"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/media?parent=37084"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/categories?post=37084"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/tags?post=37084"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}