使用 cmake 构建外部项目时如何不进行安装步骤 [英] How to not make install step when building external project with cmake
问题描述
我正在使用 cmake ExternalProject_Add 命令构建依赖项目:
I'm building dependency project with cmake ExternalProject_Add command:
include(ExternalProject)
...
set(COMMON_BASE_PROJECT_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../CommonBase)
ExternalProject_Add(CommonBaseProject
SOURCE_DIR ${COMMON_BASE_PROJECT_DIR}
BINARY_DIR ${COMMON_BASE_PROJECT_DIR}/build
INSTALL_COMMMAND ""
)
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/include)
include_directories(${COMMON_BASE_PROJECT_DIR}/include)
add_library(
${LIBRARY_NAME}
SHARED
${SRC_FILES}
${INCLUDE_FILES}
)
target_link_libraries (Bios ${COMMON_BASE_PROJECT_DIR}/build/libCommonBase.dll)
add_dependencies(Bios CommonBaseProject)
但我得到错误:
[100%] Linking CXX shared library libCommonBase.dll
[100%] Built target CommonBase
[ 50%] Performing install step for 'CommonBaseProject'
make[3]: *** No rule to make target 'install'. Stop.
我不需要安装步骤,所以我的问题是:如何禁用它?
I don't need to make install step, so my question is: how to disable it?
推荐答案
您可以使用 STEP_TARGETS build
为构建步骤生成一个目标,并添加对该特定目标的依赖.步骤目标被命名为 <external-project-name>-<step-name>
所以在这种情况下,代表构建步骤的目标将被命名为 CommonBaseProject-build
.
You can generate a target for the build step with STEP_TARGETS build
and add dependency on this particular target. The step targets are named <external-project-name>-<step-name>
so in this case the target representing the build step will be named CommonBaseProject-build
.
您可能还希望使用 EXCLUDE_FROM_ALL TRUE
从所有"目标中排除 CommonBaseProject.
You probably also want to exclude the CommonBaseProject from the "all" target with EXCLUDE_FROM_ALL TRUE
.
ExternalProject_Add(CommonBaseProject
SOURCE_DIR ${COMMON_BASE_PROJECT_DIR}
BINARY_DIR ${COMMON_BASE_PROJECT_DIR}/build
STEP_TARGETS build
EXCLUDE_FROM_ALL TRUE
)
add_dependencies(Bios CommonBaseProject-build)
这篇关于使用 cmake 构建外部项目时如何不进行安装步骤的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!