Как не сделать шаг установки при построении внешнего проекта с помощью 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)
но я получаю ошибку:
[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.
Мне не нужно делать шаг установки, поэтому мой вопрос: как его отключить?
Ответы
Ответ 1
Вы можете создать цель для этапа сборки с помощью STEP_TARGETS build
и добавить зависимость от этой конкретной цели. Целевые цели называются <external-project-name>-<step-name>
, поэтому в этом случае цель, представляющая шаг сборки, будет называться CommonBaseProject-build
.
Вероятно, вы также хотите исключить CommonBaseProject из цели "all" с помощью 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)
Ответ 2
У вас почти было это: вместо INSTALL_COMMAND ""
поставьте что-то вроде
INSTALL_COMMAND cmake -E echo "Skipping install step."