我试图通过阅读LLVM文档来创建一种新的编程语言。其中一个文档是关于“万花筒”的,一种玩具编程语言。(教程在这里:https://releases.llvm.org/9.0.0/docs/tutorial/LangImpl01.html)的数据。
tutorial中的所有代码都写在一个文件中,可以通过下面的命令进行编译:
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
文件(后面附上),除了选项“-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)
3条答案
按热度按时间k3fezbri1#
相当敏锐地发现,只是把这个添加到
CMakeLists.txt
是可以的。bf1o4zei2#
简单的方法是设置ENABLE_EXPORTS属性:
vs3odd8k3#
-rdynamic
是一个链接器标志,因此您应该使用target_link_options()
将其添加到目标。示例:
target_link_options(compiler PRIVATE rdynamic)
如果是编译器标志,则必须使用
target_compile_options()
在一个较小的注意事项,写CMake命令的大写字母被认为是过时的。现代的做法是使用小写字母的命令:
set()
、include_directories()
等等。