3
爲了能夠進行很多自動優化,我希望能夠首先使用標記-fprofile-generate
來編譯我的程序,然後運行它來生成配置文件,然後重新編譯程序改爲-fprofile-use
。CMake:連續編譯一個程序兩次
這意味着我想連續兩次編譯我的程序,每次都有兩個不同的CMAKE_CXX_FLAGS
。
我該怎麼做,使用CMake?
爲了能夠進行很多自動優化,我希望能夠首先使用標記-fprofile-generate
來編譯我的程序,然後運行它來生成配置文件,然後重新編譯程序改爲-fprofile-use
。CMake:連續編譯一個程序兩次
這意味着我想連續兩次編譯我的程序,每次都有兩個不同的CMAKE_CXX_FLAGS
。
我該怎麼做,使用CMake?
你可以構建一些東西然後運行它,然後在執行之後通過使用客戶目標和「add_dependencies」命令來構建其他東西。爲了您的gcov情況下,你可以這樣做:
profile.cxx
#include <iostream>
int main(void) {
std::cout << "Hello from Generating Profile run" << std::endl;
return 0;
}
的CMakeLists.txt
cmake_minimum_required(VERSION 3.1 FATAL_ERROR)
project(profileExample C CXX)
# compile initial program
add_executable(profileGenerate profile.cxx)
set_target_properties(profileGenerate PROPERTIES COMPILE_FLAGS "-fprofile-
generate")
target_link_libraries(profileGenerate gcov)
add_executable(profileUse profile.cxx)
set_target_properties(profileUse PROPERTIES COMPILE_FLAGS "-fprofile-use")
target_link_libraries(profileUse gcov)
# custom target to run program
add_custom_target(profileGenerate_run
COMMAND profileGenerate
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
COMMENT "run Profile Generate"
SOURCES profile.cxx
)
#create depency for profileUse on profileGenerate_run
add_dependencies(profileUse profileGenerate_run)
輸出,顯示建造 - >運行 - >構建
感謝您的回答。我沒有想到這麼做:O – CpCd0y