如何在使用cmake构建外部项目时不执行安装步骤
我正在使用cmake ExternalProject\u Add命令构建依赖项项目:如何在使用cmake构建外部项目时不执行安装步骤,cmake,dependencies,installation,project,Cmake,Dependencies,Installation,Project,我正在使用cmake ExternalProject\u Add命令构建依赖项项目: 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_P
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.
我不需要执行安装步骤,所以我的问题是:如何禁用它?您可以使用
步骤\u TARGETS build
为构建步骤生成目标,并添加对该特定目标的依赖关系。步骤目标被命名为-
,因此在本例中,表示生成步骤的目标将被命名为CommonBaseProject build
您可能还希望使用exclude\u from\u all TRUE
将CommonBaseProject从“all”目标中排除
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)
您几乎已经拥有了它:而不是
INSTALL\u COMMAND”“
put
INSTALL_COMMAND cmake -E echo "Skipping install step."
与您的问题无关,问题已经得到了回答,但就我而言,我有以下
ExternalProject\u Add
指令:
ExternalProject_Add(external_project
# [...]
# Override build/install command
BUILD_COMMAND ""
INSTALL_COMMAND
"${CMAKE_COMMAND}"
--build .
--target INSTALL # Wrong casing for "install" target
--config ${CMAKE_BUILD_TYPE}
)
在这种情况下,cmake退出时出现了非常类似的错误(
***没有规则让目标“安装”
),但在这种情况下,外部项目正在查找不正确的大写字母安装
目标:正确的大小写是安装
。显然,这在Windows和MSVC中起作用,但在unix操作系统中失败。您的意思是删除“安装命令”行吗?我试过了,但结果是一样的。你也可以使用true
或:
命令,它们什么也不做,即INSTALL\u命令true
。但在执行安装步骤时,它仍将显示。这很有效<代码>安装命令“
不够,cmake仍将运行安装
步骤。是否有方法在以后为外部项目手动调用安装步骤?例如,作为主项目安装步骤的一部分,您可以添加依赖项(install CommonBaseProject install)
,但这不会全局安装外部项目。如果未更改,将安装到本地生成目录。