layout: post
title: "CMake 引入外部工程方法"
date: 2026-03-24 00:00:00 +0800
categories: [CPlus]
tags: [cpp, cmake]
ExternalProject用法
include(ExternalProject)
set(MultiMarkdown_ROOT ${CMAKE_BINARY_DIR}/thirdparty/MultiMarkdown)
set(MultiMarkdown_GIT_TAG 6.6.0)
set(MultiMarkdown_GIT_URL https://github.com/fletcher/MultiMarkdown-6.git)
set(MultiMarkdown_CONFIGURE cd ${MultiMarkdown_ROOT}/src/MultiMarkdown-build
&& cmake -DCMAKE_INSTALL_PREFIX=. ${MultiMarkdown_ROOT}/src/MultiMarkdown)
set(MultiMarkdown_MAKE cd ${MultiMarkdown_ROOT}/src/MultiMarkdown-build && make)
set(MultiMarkdown_INSTALL cd ${MultiMarkdown_ROOT}/src/MultiMarkdown-build && make install)
ExternalProject_Add(MultiMarkdown
PREFIX ${MultiMarkdown_ROOT}
GIT_REPOSITORY ${MultiMarkdown_GIT_URL}
GIT_TAG ${MultiMarkdown_GIT_TAG}
CONFIGURE_COMMAND ${MultiMarkdown_CONFIGURE}
BUILD_COMMAND ${MultiMarkdown_MAKE}
INSTALL_COMMAND ${MultiMarkdown_INSTALL}
)
set(MultiMarkdown_LIB_DIR ${MultiMarkdown_ROOT}/src/MultiMarkdown-build)
set(MultiMarkdown_INCLUDE_DIR ${MultiMarkdown_ROOT}/src/MultiMarkdown-build)
message("Rescan0 ${MultiMarkdown_FOUND}")
include_directories(${MultiMarkdown_ROOT}/src/MultiMarkdown-build/libMultiMarkdown.framework/Headers)
add_library(Markdown STATIC IMPORTED)
set_target_properties(Markdown PROPERTIES
FRAMEWORK TRUE
IMPORTED_LOCATION ${MultiMarkdown_ROOT}/src/MultiMarkdown-build/libMultiMarkdown.framework/libMultiMarkdown)
FetchContent用法
include(FetchContent)
set(SPDLOG_GIT_TAG v1.10.0)
set(SPDLOG_GIT_URL https://github.com/gabime/spdlog.git)
FetchContent_Declare(
spdlog
GIT_REPOSITORY ${SPDLOG_GIT_URL}
GIT_TAG ${SPDLOG_GIT_TAG}
)
FetchContent_MakeAvailable(spdlog)