在我的CMakeLists.txt
中,全局 C 和 CXX 标志是使用命令add_definitions()
和
add_compile_options 设置的。
多次尝试检索 C/CXX 标志:
${CMAKE_C_FLAGS}
并且${CMAKE_CXX_FLAGS}
是空的${CMAKE_C_FLAGS_${CMAKE_BUILD_TYPE}}
是原始的默认 CMake 值
(例如-g
forCMAKE_C_FLAGS_DEBUG
)${CMAKE_CXX_FLAGS_${CMAKE_BUILD_TYPE}}
和上面一样get_cmake_property(def COMPILE_DEFINITIONS)
是NOTFOUND
get_cmake_property(opt COMPILE_OPTIONS)
也是NOTFOUND
我想将我的自定义 C/CXX 标志传递给基于以下内容的外部项目./configure
:
ExternalProject_Add( my_external_lib
DEPENDS Threads::Threads
SOURCE_DIR ${CMAKE_CURRENT_LIST_DIR}
BUILD_IN_SOURCE 1
UPDATE_COMMAND echo "Full clean" && make distclean
CONFIGURE_COMMAND ${CMAKE_CURRENT_LIST_DIR}/configure
--prefix=${CMAKE_BINARY_DIR}
--cc=${CMAKE_C_COMPILER}
--cxx=${CMAKE_CXX_COMPILER}
--CFLAGS=${CMAKE_C_FLAGS_${CMAKE_BUILD_TYPE}}
--CXXFLAGS=${CMAKE_CXX_FLAGS_${CMAKE_BUILD_TYPE}}
--LDFLAGS=${CMAKE_STATIC_LINKER_FLAGS_${CMAKE_BUILD_TYPE}}
--ARFLAGS=${CMAKE_STATIC_LINKER_FLAGS_${CMAKE_BUILD_TYPE}}
--enable-static
)
(1)如何获取add_definitions()和add_compile_options设置的编译标志?
注意:我使用 CMake 版本 3.3.2
在写这个问题时,我意识到我想知道另一个问题:
我使用ccache
但./configure
脚本看不到我的环境变量CC
,CXX
当我这样设置它们时:
get_cmake_property(launcher RULE_LAUNCH_COMPILE)
set(ENV{CC} ${launcher} ${CMAKE_C_COMPILER})
set(ENV{CXX} ${launcher} ${CMAKE_CXX_COMPILER})
(2)以上这些 CMake 语句是否正确?
哎呀我又问了一个问题:
我从同一个变量中检索LDFLAGS
and 。
(3)是否需要设置另一个 CMake 变量?ARFLAGS
${CMAKE_STATIC_LINKER_FLAGS}
ARFLAGS