我试图通过读取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来管理我的项目。除了选项"-rdynamic“之外,我已经将上面的大部分命令转换为一个-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)
发布于 2022-04-18 14:21:43
很容易发现,仅仅将它添加到CMakeLists.txt
中就可以了。
set(CMAKE_CXX_FLAGS -rdynamic)
发布于 2022-07-30 20:46:50
清洁的方法是设置出口属性:
set_property(TARGET compiler PROPERTY ENABLE_EXPORTS ON)
发布于 2022-04-18 14:04:50
-rdynamic
是链接器标志,因此您应该使用target_link_options()
将其添加到目标中。
示例:target_link_options(compiler PRIVATE rdynamic)
如果它是编译器标志,则必须使用target_compile_options()
从更小的意义上讲,用大写字母编写CMake命令被认为是过时的。现代实践是使用小写命令:set()
、include_directories()
等。
https://stackoverflow.com/questions/71912506
复制相似问题