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)
but i get error:
[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?
You almost had it: Instead of
INSTALL_COMMAND ""
put something likeYou 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 namedCommonBaseProject-build
.You probably also want to exclude the CommonBaseProject from the "all" target with
EXCLUDE_FROM_ALL TRUE
.Not relevant to your question, which it was already answered, but in my case I had the following
ExternalProject_Add
directive:In this case cmake quits with very similar error (
*** No rule to make target 'INSTALL'
), but in this case it's the external project that is looking for incorrect uppercaseINSTALL
target: correct case isinstall
instead. Apparently, that worked in Windows with MSVC but fails in unix operating systems.