[Qt-creator] CMake configuration loop when using vcpkg

Jakub Narolewski izowiuz at gmail.com
Thu Aug 26 18:32:11 CEST 2021


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 <- **

-- 
Best regards / Pozdrawiam serdecznie
Narolewski Jakub
Software Developer


More information about the Qt-creator mailing list