Я создаю библиотеку в CMake, которая имеет некоторые константы в частном заголовке. Когда я компилирую в Release
config, например, -O3 -DNDEBUG
и запускаю strings
на выходе, эти константы появляются на выходе. Имена этих констант раскрывают некоторые детали реализации, которые я хотел бы скрыть, если это возможно.
Вот минимальный пример проекта, который демонстрирует проблему:
private.h
#pragma once
const int MY_CONSTANT = 42;
lib. c
#include "private.h"
extern int get_mask(void)
{
return MY_CONSTANT ^ 3;
}
CMakeLists.txt
cmake_minimum_required(VERSION 3.5)
project(dummylib)
add_library(mylib SHARED lib.c)
Сборка и показ вывод строки:
$ mkdir build && cd build && cmake -DCMAKE_BUILD_TYPE=Release .. && cmake --build . --config Release -- VERBOSE=1 && strings libmylib.so | grep MY
MY_CONSTANT
Есть ли какой-то дополнительный переключатель, который я могу использовать, чтобы скрыть эту информацию?