clang的等效性是什么CMAKE的选项?
我正在尝试通过阅读LLVM文档来创建一种新的编程语言。其中一个文档是关于玩具编程语言“万花筒”。 (教程在这里: 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管理我的项目。我已经将上面的大部分命令转化为
cmakelists.txt
file(以后连接),除了选项“ -rdynamic”。
有人知道如何将此选项添加到我的 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)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
干净的方法是设置 enable_exports 属性:
The clean way is to set the ENABLE_EXPORTS property:
很高兴发现只将其添加到
cmakelists.txt
是可以的。Quite akward to find out just adding this to
CMakeLists.txt
is OK.-rdynamic
是一个链接标志,因此您应使用 target_link_options() 将其添加到您的目标中。示例:
target_link_options(编译器私有rdynamic)
如果是编译器标志,则必须使用
target_compile_options()
在较小的音符上,在上案例中编写cmake命令被认为是过时的。现代实践是使用小写命令:
set()
,<代码> include_directories()等。-rdynamic
is a linker flag, so you should usetarget_link_options()
to add it to your target.Example:
target_link_options(compiler PRIVATE rdynamic)
If it were a compiler flag, you'd have to use
target_compile_options()
On a smaller note, writing CMake commands in upper case is considered obsolete. The modern practice is to use lowercase commands:
set()
,include_directories()
etc.