首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Clang++的"-rdynamic“选项在CMake中的等价性是什么?

Clang++的"-rdynamic“选项在CMake中的等价性是什么?
EN

Stack Overflow用户
提问于 2022-04-18 13:34:32
回答 3查看 474关注 0票数 2

我试图通过读取LLVM文档来创建一种新的编程语言。其中一个文件是关于“万花筒”,一种玩具编程语言。(教程在这里:https://releases.llvm.org/9.0.0/docs/tutorial/LangImpl01.html)。

教程中的所有代码都是在一个文件中编写的,可以通过以下命令进行编译:

代码语言:javascript
运行
复制
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“之外,我已经将上面的大部分命令转换为一个-rdynamic文件(随后附加)。有人知道如何将此选项添加到我的CMakeLists.txt中吗?提前感谢!

代码语言:javascript
运行
复制
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)
EN

回答 3

Stack Overflow用户

发布于 2022-04-18 14:21:43

很容易发现,仅仅将它添加到CMakeLists.txt中就可以了。

代码语言:javascript
运行
复制
set(CMAKE_CXX_FLAGS -rdynamic)
票数 0
EN

Stack Overflow用户

发布于 2022-07-30 20:46:50

清洁的方法是设置出口属性:

代码语言:javascript
运行
复制
set_property(TARGET compiler PROPERTY ENABLE_EXPORTS ON)
票数 0
EN

Stack Overflow用户

发布于 2022-04-18 14:04:50

-rdynamic是链接器标志,因此您应该使用target_link_options()将其添加到目标中。

示例target_link_options(compiler PRIVATE rdynamic)

如果它是编译器标志,则必须使用target_compile_options()

从更小的意义上讲,用大写字母编写CMake命令被认为是过时的。现代实践是使用小写命令:set()include_directories()等。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71912506

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档