[英]what's the equivalence of Clang++'s "-rdynamic" option in CMake?
我正在尝试通过阅读 LLVM 文档来创建一种新的编程语言。 其中一个文件是关于“Kaleidoscope”的,一种玩具编程语言。 (教程在这里: https://releases.llvm.org/9.0.0/docs/tutorial/LangImpl01.html )。
教程中的所有代码都写在一个文件中,可以通过以下命令编译:
clang++ -g -O3 toy.cpp -I/usr/lib/llvm-10/include -std=c++14 \
-fno-exceptions -D_GNU_SOURCE -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS \
-L/usr/lib/llvm-10/lib \
-rdynamic \
-lLLVM-10 -o toy
但是,我想通过 CMake 来管理我的项目。 除了选项“-rdynamic”之外,我已经将上面的大部分命令翻译成CMakeLists.txt
文件(随后附加)。 有谁知道如何将此选项添加到我的CMakeLists.txt
? 提前致谢!
SET(CMAKE_CXX_COMPILER "/usr/bin/clang++")
INCLUDE_DIRECTORIES("/usr/lib/llvm-10/include")
LINK_DIRECTORIES("/usr/lib/llvm-10/lib")
SET(_GNU_SOURCE 1)
SET(__STDC_CONSTANT_MACROS 1)
SET(__STDC_FORMAT_MACROS 1)
SET(__STDC_LIMIT_MACROS 1)
# Project configuration
# omit something unrelated
FIND_PACKAGE(LLVM REQUIRED CONFIG)
TARGET_LINK_LIBRARIES(compiler LLVM-10)
发现只需将其添加到CMakeLists.txt
就可以了。
set(CMAKE_CXX_FLAGS -rdynamic)
干净的方法是设置ENABLE_EXPORTS属性:
set_property(TARGET compiler PROPERTY ENABLE_EXPORTS ON)
首先,用大写的 CMake 命令在 10 年前就已经过时了。 现在它简直是不可接受的(在我看来),所以它应该是set()
, include_directories()
等。
至于你的问题: rdynamic
是一个 linker 标志,所以你使用target_link_options()
命令将它添加到你的目标。 如果它是编译器标志,您将使用target_compile_options()
。
示例: target_link_options(compiler PRIVATE rdynamic)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.