gpt4 book ai didi

c++ - 不链接编译

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:51:13 26 4
gpt4 key购买 nike

我有一个使用 CMake 设置的项目,我想在项目中构建一个目标文件并输出其 llvm IR 表示,以便系统地检查生成的输出。

我目前的情况是这样的:

if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
separate_arguments(COMPILE_FLAGS UNIX_COMMAND ${CMAKE_CXX_FLAGS})
list(APPEND COMPILE_FLAGS "-S" "-emit-llvm" "-o" "example1.llvm")

add_custom_command(
TARGET example1 #example1 is the target that builds the actual executable
POST_BUILD
COMMAND ${CMAKE_CXX_COMPILER}
ARGS ${COMPILE_FLAGS} ${CMAKE_CURRENT_SOURCE_DIR}/calculator1.cpp
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
COMMENT "Output the llvm IR representation"
)
endif()

不幸的是 ${CMAKE_CXX_FLAGS} 不包含在实际编译中传递给 clang 的所有参数。我至少错过了额外的包含目录,可能还有其他东西。

我试过了

get_target_property(MYVAR example1 COMPILE_FLAGS)

get_property(
MYVAR
TARGET example1
PROPERTY COMPILE_FLAGS )

但他们都失败了。

如何将所有选项传递给编译器(而不是链接器)?

我应该采取完全不同的方法吗?

最佳答案

您是否使用 CMake 生成 Makefile:s?在这种情况下,您可以使用属性 RULE_LAUNCH_COMPILE:

RULE_LAUNCH_COMPILE Specify a launcher for compile rules.

Makefile generators prefix compiler commands with the given launcher command line. This is intended to allow launchers to intercept build problems with high granularity. Non-Makefile generators currently ignore this property.

关于c++ - 不链接编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28488531/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com