Изменение компилируемого файла средствами CMake
У меня есть C/C++ файл functions.cpp. Как с помощью CMake скомпилировать только определённые функции из этого файла?
То есть вместо:
add_library(my_lib functions.cpp)
Надо что-то вроде:
add_library(my_lib some_functions.cpp)
Возможно, надо скопировать исходный файл и удалить из него ненужные функции? Как это сделать средствами CMake?
Содержимое файла может меняться, список нужных функций тоже, изменять functions.cpp для этих целей я не могу, поэтому необходимо делать это на этапе сборки, а не вручную создавать новый файл some_functions.cpp всякий раз, включая только нужные функции из общего хедера.
Ответы (1 шт):
Это можно сделать с помощью директив препроцессора и cmake-команды add_compile_definitions(). Например, так я писал кроссплатформенные функции для работы с текстом (кодировками):
В CMakeLists.txt:
add_compile_definitions(Linux=1 Windows=2)
if (UNIX)
add_compile_definitions(OS=Linux)
elseif (WIN32)
add_compile_definitions(OS=Windows)
endif ()
В коде:
#if OS == Linux
/* code */
#elif OS == Windows
/* code */
#endif