使用cmake构建外部项目时如何不进行安装步骤

Vya*_*lav 16 dependencies install project cmake

我正在使用cmake ExternalProject_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_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)
Run Code Online (Sandbox Code Playgroud)

但我得到错误:

[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.
Run Code Online (Sandbox Code Playgroud)

我不需要进行安装步骤,所以我的问题是:如何禁用它?

Paw*_*ica 10

您可以使用生成构建步骤的目标STEP_TARGETS build并添加对此特定目标的依赖性.步骤目标命名为<external-project-name>-<step-name>,在这种情况下,将命名表示构建步骤的目标CommonBaseProject-build.

您可能还希望从"all"目标中排除CommonBaseProject 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)
Run Code Online (Sandbox Code Playgroud)


Jam*_*orn 10

您几乎拥有它:而不是INSTALL_COMMAND ""

    INSTALL_COMMAND cmake -E echo "Skipping install step."
Run Code Online (Sandbox Code Playgroud)

  • 您也可以使用“ true”或“:”命令,它们什么都不做,即“ INSTALL_COMMAND true”。但它仍会显示“执行安装步骤”。 (2认同)