【发布时间】:2015-02-12 21:53:19
【问题描述】:
我有一个使用 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 )
但他们都失败了。
如何将所有选项传递给编译器(而不是链接器)?
我应该采取完全不同的方法吗?
【问题讨论】: