簡體   English   中英

CMake 中 Clang++ 的“-rdynamic”選項的等價物是什么?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM