是否可以使用 CMake 设置 `-fexceptions` 标志来构建 yaml-cpp

Is it possible to set `-fexceptions` flag for building yaml-cpp using CMake

我正在尝试将 libyaml-cpp 集成到使用 CMake 的项目中。我使用 add_subdirectory(yaml-cpp) 添加了 yaml-cpp 到 CMakefile。但是,我的项目使用以下标志 -fno-exceptions 作为 gcc 编译器设置。此标志在构建 yaml-cpp 时发出以下错误:

/yaml-cpp/include/yaml-cpp/node/impl.h:60:35: error: exception handling disabled, use -fexceptions to enable throw InvalidNode(m_invalidKey);

因此,解决方案是启用 -fexceptions 标志。但我只想为 yaml-cpp 构建启用此功能,而不是项目的其余部分。

我是 Cmakeyaml-cpp 的新手。有没有办法在 Cmakefile 中设置此标志 -fexceptions(对于 yaml-cpp),以便构建通过。?

假设您在 GitHub 存储库 here, and assuming you are building on a Unix system, the compilation options (flags) for the yaml-cpp target are applied in the CMake file here, at the target_compile_options() 调用中使用 yaml-cpp 代码。只需将 -fexceptions 标志添加到该调用,对于 not-msvc 情况:

yaml-cpp/CMakeLists.txt:

...
target_compile_options(yaml-cpp
  PRIVATE
    # Add -fexceptions to this line.
    $<${not-msvc}:-Wall -Wextra -Wshadow -Weffc++ -Wno-long-long -fexceptions>
    $<${not-msvc}:-pedantic -pedantic-errors>

    $<$<AND:${backport-msvc-runtime},${msvc-rt-mtd-static}>:-MTd>
    $<$<AND:${backport-msvc-runtime},${msvc-rt-mt-static}>:-MT>
    $<$<AND:${backport-msvc-runtime},${msvc-rt-mtd-dll}>:-MDd>
    $<$<AND:${backport-msvc-runtime},${msvc-rt-mt-dll}>:-MD>

    # /wd4127 = disable warning C4127 "conditional expression is constant"
    # http://msdn.microsoft.com/en-us/library/6t66728h.aspx
    # /wd4355 = disable warning C4355 "'this' : used in base member initializer list
    # http://msdn.microsoft.com/en-us/library/3c594ae3.aspx
    $<$<CXX_COMPILER_ID:MSVC>:/W3 /wd4127 /wd4355>)