[Qt-creator] CMake configuration loop when using vcpkg

Cristian Adam cristian.adam at qt.io
Mon Aug 30 10:18:02 CEST 2021


Hi Jakub,

The infinite CMake loop bug is still not yet fixed.

See https://bugreports.qt.io/browse/QTCREATORBUG-25346 for a similar 
vpkg report.

The workaround that seems to work is unchecking "Autorun CMake" in Qt 
Creator settings.

Cheers,
Cristian.


On 8/26/2021 6:32 PM, Jakub Narolewski wrote:
> I recently stated observing extremely annoying thing when I use 
> QtCreator with projects that also happen to use vcpkg as my package 
> manager.
> Namely, after initial, successful CMake configuration, any call to CMake 
> configure causes infinite 'configuration loop'. This happens when 
> QtCreator detects new changes in CMakeLists.txt or even if I just call 
> it manually.
> 
> This looks like this:
> 
> ** logs -> **
> 
> Running /usr/bin/cmake -S /home/izowiuz/Git/concordia -B 
> /home/izowiuz/Git/concordia/build in /home/izowiuz/Git/concordia/build.
> -- Running vcpkg install
> Detecting compiler hash for triplet x64-linux...
> All requested packages are currently installed.
> 
> Total elapsed time: 2.04 us
> 
> The package openssl is compatible with built-in CMake targets:
> 
>      find_package(OpenSSL REQUIRED)
>      target_link_libraries(main PRIVATE OpenSSL::SSL OpenSSL::Crypto)
> 
> The package libpq provides CMake integration:
> 
>      find_package(PostgreSQL REQUIRED)
>      target_link_libraries(main PRIVATE PostgreSQL::PostgreSQL)
> 
> The package libpqxx:x64-linux provides CMake targets:
> 
>      find_package(libpqxx CONFIG REQUIRED)
>      target_link_libraries(main PRIVATE libpqxx::pqxx)
> 
> The package nlohmann-json:x64-linux provides CMake targets:
> 
>      find_package(nlohmann_json CONFIG REQUIRED)
>      target_link_libraries(main PRIVATE nlohmann_json 
> nlohmann_json::nlohmann_json)
> 
> The package spdlog:x64-linux provides CMake targets:
> 
>      find_package(spdlog CONFIG REQUIRED)
>      target_link_libraries(main PRIVATE spdlog::spdlog 
> spdlog::spdlog_header_only)
> 
> -- Running vcpkg install - done
> -- Configuring done
> -- Generating done
> -- Build files have been written to: /home/izowiuz/Git/concordia/build
> Elapsed time: 00:02.
> 
> Running /usr/bin/cmake -S /home/izowiuz/Git/concordia -B 
> /home/izowiuz/Git/concordia/build in /home/izowiuz/Git/concordia/build.
> -- Running vcpkg install
> Detecting compiler hash for triplet x64-linux...
> All requested packages are currently installed.
> 
> Total elapsed time: 1.68 us ...
> 
> [ ... gazilion more configuration steps skipped ... ]
> 
> ** logs <- **
> 
> I somewhat suspecting this being a fault of a vcpkg because I believe 
> QtC 4.15.2 worked fine earlier in that configuration. This is with 
> pretty mundane CMakeLists.txt without any esoteric stuff done in it. I'm 
> attaching a complete CMakeLists.txt where I see this at the end of my 
> message.
> 
> I see this with QtCreator 4.15.2, 5.0 RC / Beta and 5.0 release.
> I'm using Kubuntu 21.04 x86_64 and vcpkg on version 2021-08-12-unknownhash
> 
> Any help here would be greatly appreciated. I much prefer QtC to the 
> vscode on Linux :]
> 
> ** CMakeLists.txt -> **
> 
> # minimum required CMake version
> cmake_minimum_required(VERSION 3.15)
> 
> # force verbose makefiles
> set(CMAKE_VERBOSE_MAKEFILE ON)
> 
> # vcpkg's toolchain_file
> if(DEFINED ENV{VCPKG_ROOT} AND NOT DEFINED CMAKE_TOOLCHAIN_FILE)
>      set(VCPKG_ROOT $ENV{VCPKG_ROOT})
>      set(CMAKE_TOOLCHAIN_FILE 
> "${VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake" CACHE STRING "")
> endif()
> 
> set(VCPKG_FEATURE_FLAGS ${VCPKG_FEATURE_FLAGS} "registries" CACHE STRING 
> "")
> 
> project("concordia")
> 
> find_package(OpenSSL REQUIRED)
> find_package(spdlog CONFIG REQUIRED)
> find_package(PostgreSQL REQUIRED)
> find_package(libpqxx CONFIG REQUIRED)
> find_package(nlohmann_json CONFIG REQUIRED)
> 
> set(Boost_USE_STATIC_LIBS ON)
> find_package(Boost REQUIRED)
> 
> add_executable(
>      concordia
>      ""
> )
> 
> target_compile_features(
>      concordia
> PRIVATE
>      cxx_std_17
> )
> 
> target_sources(
>      concordia
> PRIVATE
>      "src/Concordia.cpp"
>      "src/Listener.cpp"
>      "src/Listener.h"
>      "src/Service.cpp"
>      "src/Service.h"
>      "src/Connection.cpp"
>      "src/Connection.h"
>      "src/DatabaseConnection.cpp"
>      "src/DatabaseConnection.h"
>      "src/RequestProcessor.cpp"
>      "src/RequestProcessor.h"
>      "src/Endpoint.cpp"
>      "src/Endpoint.h"
> )
> 
> target_include_directories(
>      concordia
> PRIVATE
>      ${Boost_INCLUDE_DIR}
> )
> 
> target_link_libraries(
>      concordia
> PRIVATE
>      libpqxx::pqxx
>      PostgreSQL::PostgreSQL
>      OpenSSL::SSL
>      OpenSSL::Crypto
>      spdlog::spdlog
>      nlohmann_json::nlohmann_json
> )
> 
> 
> ** CMakeLists.txt <- **
> 


More information about the Qt-creator mailing list