3 回答

TA貢獻(xiàn)1788條經(jīng)驗(yàn) 獲得超4個(gè)贊
假設(shè)您要添加這些標(biāo)志(最好將它們聲明為常量):
SET(GCC_COVERAGE_COMPILE_FLAGS "-fprofile-arcs -ftest-coverage")SET(GCC_COVERAGE_LINK_FLAGS "-lgcov")
有幾種方法可以添加它們:
最簡(jiǎn)單的(不干凈,但簡(jiǎn)單方便,只適用于編譯標(biāo)志,C&C ++一次):
add_definitions(${GCC_COVERAGE_COMPILE_FLAGS})
附加到相應(yīng)的CMake變量:
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${GCC_COVERAGE_COMPILE_FLAGS}")SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${GCC_COVERAGE_LINK_FLAGS}")
使用目標(biāo)屬性,參見 doc CMake編譯標(biāo)志目標(biāo)屬性,需要知道目標(biāo)名稱。
get_target_property(TEMP ${THE_TARGET} COMPILE_FLAGS)if(TEMP STREQUAL "TEMP-NOTFOUND") SET(TEMP "") # Set to empty stringelse() SET(TEMP "${TEMP} ") # A space to cleanly separate from existing contentendif()# Append our valuesSET(TEMP "${TEMP}${GCC_COVERAGE_COMPILE_FLAGS}" )set_target_properties(${THE_TARGET} PROPERTIES COMPILE_FLAGS ${TEMP} )
現(xiàn)在我使用方法2。

TA貢獻(xiàn)1804條經(jīng)驗(yàn) 獲得超7個(gè)贊
在較新版本的CMake中,您可以分別使用target_compile_options
和設(shè)置單個(gè)目標(biāo)的編譯器和鏈接器標(biāo)志target_link_libraries
(是的,后者也設(shè)置鏈接器選項(xiàng)):
target_compile_options(first-test PRIVATE -fexceptions)
這種方法的優(yōu)點(diǎn)是你可以控制選項(xiàng)傳播到依賴于這個(gè)PUBLIC
和/的其他目標(biāo)PRIVATE
。
從CMake 3.13開始,您還可以使用target_link_options
添加鏈接器選項(xiàng),使意圖更清晰。

TA貢獻(xiàn)1844條經(jīng)驗(yàn) 獲得超8個(gè)贊
嘗試設(shè)置變量CMAKE_CXX_FLAGS
而不是CMAKE_C_FLAGS
:
set (CMAKE_CXX_FLAGS "-fexceptions")
該變量CMAKE_C_FLAGS
僅影響C編譯器,但您正在編譯C ++代碼。
添加標(biāo)志CMAKE_EXE_LINKER_FLAGS
是多余的。
添加回答
舉報(bào)