我在docker中遇到cmake的问题,cmake在系统中找不到OpenSSL包,但是我确定已经安装了。我看到有关未设置必需的内部 CMake 变量的奇怪错误。
我可以在普通 VM 中编译相同的代码而不会出现问题,但我无法在 docker 中运行它。
有谁知道这里出了什么问题? 我已经上传了完整的代码: https://gitlab.com/kenjichanhkg/docker_cmake_hello_world.git 请查看“cmake_helloworld”分支。
dockerfile 如下所示:
FROM gcc:latest
COPY . /usr/test/src
WORKDIR /usr/test/src
RUN apt update -y && apt install -y \
cmake \
libssl-dev \
git
RUN ./build.sh
CMD [ "./build/test" ]
cmake 文件如下所示:
cmake_minimum_required( VERSION 3.13 )
find_package(OpenSSL REQUIRED)
project( docker_cmake_hello_world )
add_executable(test main.cpp)
include_directories(
${OPENSSL_INCLUDE_DIR}
)
target_link_libraries(
test
OpenSSL::SSL
)
谢谢!!
答案 0 :(得分:0)
我想你的 CMakeLists.txt 是错误的。 CMake 在 project
命令中设置其环境,因此要正确使用 find_package
,您至少需要将该命令移动到 project
之后。并且 include_directories
命令需要在 add_executable
命令之前移动才能生效(也许您打算使用 target_include_directories
?)。由于 OpenSSL 已经提供了正确的导入目标 OpenSSL::SSL,因此您根本不需要为包含目录添加单独的命令。
适合您的测试程序的 CMakeLists.txt 文件应如下所示:
cmake_minimum_required(VERSION 3.13)
project(docker_cmake_hello_world)
find_package(OpenSSL REQUIRED)
add_executable(test main.cpp)
target_link_libraries(test PRIVATE OpenSSL::SSL)