diff --git a/conan.cmake b/conan.cmake index 30e956c9..15bfea75 100644 --- a/conan.cmake +++ b/conan.cmake @@ -556,7 +556,7 @@ function(conan_cmake_install) set(installOptions UPDATE NO_IMPORTS OUTPUT_QUIET ERROR_QUIET) set(installOneValueArgs PATH_OR_REFERENCE REFERENCE REMOTE LOCKFILE LOCKFILE_OUT LOCKFILE_NODE_ID INSTALL_FOLDER OUTPUT_FOLDER) set(installMultiValueArgs GENERATOR BUILD ENV ENV_HOST ENV_BUILD OPTIONS_HOST OPTIONS OPTIONS_BUILD PROFILE - PROFILE_HOST PROFILE_BUILD SETTINGS SETTINGS_HOST SETTINGS_BUILD) + PROFILE_HOST PROFILE_BUILD SETTINGS SETTINGS_HOST SETTINGS_BUILD CONF CONF_HOST CONF_BUILD) cmake_parse_arguments(ARGS "${installOptions}" "${installOneValueArgs}" "${installMultiValueArgs}" ${ARGN}) foreach(arg ${installOptions}) if(ARGS_${arg}) @@ -611,6 +611,12 @@ function(conan_cmake_install) set(flag "--settings:host") elseif("${arg}" STREQUAL "SETTINGS_BUILD") set(flag "--settings:build") + elseif("${arg}" STREQUAL "CONF") + set(flag "--conf") + elseif("${arg}" STREQUAL "CONF_HOST") + set(flag "--conf:host") + elseif("${arg}" STREQUAL "CONF_BUILD") + set(flag "--conf:build") endif() list(LENGTH ARGS_${arg} numargs) foreach(item ${ARGS_${arg}}) @@ -628,9 +634,12 @@ function(conan_cmake_install) if(DEFINED NO_IMPORTS) set(NO_IMPORTS --no-imports) endif() - set(install_args install ${PATH_OR_REFERENCE} ${REFERENCE} ${UPDATE} ${NO_IMPORTS} ${REMOTE} ${LOCKFILE} ${LOCKFILE_OUT} ${LOCKFILE_NODE_ID} ${INSTALL_FOLDER} ${OUTPUT_FOLDER} - ${GENERATOR} ${BUILD} ${ENV} ${ENV_HOST} ${ENV_BUILD} ${OPTIONS} ${OPTIONS_HOST} ${OPTIONS_BUILD} - ${PROFILE} ${PROFILE_HOST} ${PROFILE_BUILD} ${SETTINGS} ${SETTINGS_HOST} ${SETTINGS_BUILD}) + set(install_args install ${PATH_OR_REFERENCE} ${REFERENCE} ${UPDATE} ${NO_IMPORTS} ${REMOTE} + ${LOCKFILE} ${LOCKFILE_OUT} ${LOCKFILE_NODE_ID} ${INSTALL_FOLDER} + ${OUTPUT_FOLDER} ${GENERATOR} ${BUILD} ${ENV} ${ENV_HOST} ${ENV_BUILD} + ${OPTIONS} ${OPTIONS_HOST} ${OPTIONS_BUILD} ${PROFILE} ${PROFILE_HOST} + ${PROFILE_BUILD} ${SETTINGS} ${SETTINGS_HOST} ${SETTINGS_BUILD} + ${CONF} ${CONF_HOST} ${CONF_BUILD}) string(REPLACE ";" " " _install_args "${install_args}") message(STATUS "Conan executing: ${CONAN_CMD} ${_install_args}") diff --git a/tests.py b/tests.py index d5f4668a..beda43a1 100644 --- a/tests.py +++ b/tests.py @@ -176,6 +176,28 @@ def test_conan_cmake_install_args(self): run("cmake .. {} -DCMAKE_BUILD_TYPE=Release".format(generator)) run("cmake --build . --config Release") + def test_conan_cmake_install_conf_args(self): + content = textwrap.dedent(""" + cmake_minimum_required(VERSION 3.9) + project(FormatOutput CXX) + include(conan.cmake) + conan_cmake_configure(REQUIRES "") + conan_cmake_autodetect(settings) + conan_cmake_install(PATH_OR_REFERENCE . + GENERATOR cmake + REMOTE conancenter + CONF user.configuration:myconfig=somevalue + SETTINGS ${settings}) + """) + save("CMakeLists.txt", content) + os.makedirs("build") + os.chdir("build") + run("cmake .. {} -DCMAKE_BUILD_TYPE=Release > output.txt".format(generator)) + with open('output.txt', 'r') as file: + data = file.read() + assert "--conf user.configuration:myconfig=somevalue" in data + + def test_conan_cmake_install_outputfolder(self): content = textwrap.dedent(""" cmake_minimum_required(VERSION 3.15)