Мой объект использует cmake, некоторые параметры компиляции настроены на set
set(CMAKE_CXX_FLAGS_DEBUG "-g")
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -O0")
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -Wall")
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DMY_MACRO_DEBUG")
...
set(CMAKE_CXX_FLAGS_RELEASE "-g")
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -O3")
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -Wall")
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -DMY_MACRO_RELEASE")
...
, а некоторые параметры компиляции настроены на add_definitions()
add_definitions(-DMY_MACRO_1)
add_definitions(-DMY_MACRO_2)
...
после окончания sh я хочу напечатать все параметры компиляции, используя message
Я хочу что-то наподобие следующего:
Compile options in debug mode: -g -O0 -Wall -DMY_MACRO_DEBUG -DMY_MACRO_1 -DMY_MACRO_2
Compile options in release mode: -g -O3 -Wall -DMY_MACRO_RELEASE -DMY_MACRO_1 -DMY_MACRO_2
Как я могу это реализовать? Спасибо за ваше время.
Приложение 1
Я знаю, что использование make VERBOSE=1
может показать информацию, но она может показать только параметры отладки в режиме отладки, показать параметры выпуска в режиме выпуска. Он не может показать все параметры режима одновременно. Кроме того, он также включает в себя слишком много -I /path1 -I /path2
. Это неудобный способ прочитать это.
Я хочу, чтобы информация отображалась после того, как мы введем cmake ..
Приложение 2
Если -DMY_MACRO_1 -DMY_MACRO_2
можно распечатать некоторая переменная cmake что-то вроде ${CMAKE_ALREADY_ADD_DEFINITIONS}
.
message(${CMAKE_ALREADY_ADD_DEFINITIONS})
проблема может быть легко решена. Но я не знаю, существует ли такая переменная.