Conda cxx-编译器,尽管 cmake 找到了 boost,但找不到 boost 头

问题描述 投票:0回答:1

我有一个 conda 环境,安装了:cmake、cxx-compiler、make 和 boost。我想编译一个我写的程序。如果我使用系统编译器,它工作得很好,但我想使用 conda-build 创建一个 conda 包,我在正常的 conda 环境中遇到了同样的问题。编译器找不到boost头文件:

fatal error: boost/program_options.hpp: No such file or directory
   10 | #include <boost/program_options.hpp>

我使用 CMake,它确实找到了提升:

cmake -S . -B build
-- The CXX compiler identification is GNU 12.3.0
[...]
Found Boost: /home/username/miniforge3/envs/devel/lib/cmake/Boost-1.84.0/BoostConfig.cmake (found suitable version "1.84.0", minimum required is "1.74") found components: system program_options iostreams unit_test_framework 
[...]

在 CMakeLists.txt 中使用此设置:

FIND_PACKAGE(Boost 1.74 REQUIRED COMPONENTS system program_options iostreams unit_test_framework)
target_include_directories(my_exectuable 
    SYSTEM PUBLIC ${Boost_INCLUDE_DIRS}
)

但是,当运行构建步骤时:

cmake --build build
[...]
 fatal error: boost/program_options.hpp: No such file or directory
   10 | #include <boost/program_options.hpp>
compilation terminated.

如果我更改安装 gxx 而不是 cxx-compiler,那么编译也可以正常工作(但 bioconda 配方需要 cxx-compiler),所以这不是一个解决方案。

我查看了现有的bioconda配方并尝试了不同的设置,其中$PREFIX被传递到CMake,但我总是得到相同的结果。

cmake boost conda conda-build
1个回答
0
投票

问题是由 CMakeLists.txt 中的以下行引起的:

set(CMAKE_CXX_FLAGS "-Wall -Wextra -Wunused -pedantic")

更改为

add_compile_options(-Wall -Wextra -Wpedantic)

解决了问题。

我假设 cxx-compiler 包设置了一些被覆盖的特定标志。

© www.soinside.com 2019 - 2024. All rights reserved.