Следующая программа, запущенная на моем хосте KDE Neon (обновлена до 18.04), выдает Hello World! 1
, как и ожидалось, и выводит Hello World! 0
при выполнении из контейнера Docker, созданного с использованием приведенного ниже Dockerfile и работающего с sudo docker run -it qdir
.
Нужно ли QDir запускать dbus или другую службу?
Программа C ++:
#include <QDir>
#include <iostream>
int main(int argc [[maybe_unused]], char** argv [[maybe_unused]])
{
QDir d("/");
std::cout << "Hello World! " << d.exists() << std::endl;
return 0;
}
Dockerfile:
FROM kdeneon/plasma:user-lts
USER root
RUN apt-get install -y qt5-default
WORKDIR /
COPY qdir /
CMD /bin/bash
Редактировать, CMakeLists.txt для сборки программы:
project(qdir)
cmake_minimum_required(VERSION 2.8.12 FATAL_ERROR)
set(QT_MIN_VERSION "5.3.0")
find_package(Qt5 ${QT_MIN_VERSION} CONFIG REQUIRED COMPONENTS Core)
include_directories(${Qt5Core_INCLUDE_DIRS} ${CMAKE_CURRENT_BINARY_DIR})
set(qdir_SRCS main.cpp)
add_executable(qdir ${qdir_SRCS})
target_link_libraries(qdir ${Qt5Core_LIBRARIES})
install(TARGETS qdir RUNTIME DESTINATION bin)
Edit2: Я создал проект github, перегруппировавший все вышеперечисленное.Чтобы воспроизвести проблему, если у вас есть Qt SDK, cmake, ninja и docker, просто выполните:
git clone https://github.com/kleag/qdirtest
cd qdirtest
./test.sh
Это вывод, который я получаю:
$ ./test.sh
[…]
Successfully built f710cbb7a3c9
Successfully tagged qdir:latest
Hello World! 1
Hello World! 0