Я пытаюсь создать статическую библиотеку проекта stb , поэтому я могу связать ее с другим проектом (не написанным на C / C ++).
Я создал файл CMakeLists.txtчтобы построить его с помощью CMake, однако файл встроенной статической библиотеки пуст.
Я подозреваю, что это связано с тем, что stb, похоже, является библиотекой только для заголовка .Я попытался установить флаг LIBRARY_HEADER_ONLY
с помощью target_compile_definitions
, однако это не решило мою проблему.
Как создать библиотеку только для заголовков в статическом файле библиотеки (* .a)?Или это вообще возможно?Если нет, то каковы обходные пути, если таковые имеются?
Это мой CMakeLists.txt
cmake_minimum_required(VERSION 3.10)
project(stb C)
set(MAKE_GENERATOR_PLATFORM x64)
set(CMAKE_C_FLAGS -m64)
set(CMAKE_CXX_FLAGS -m64)
option(STB_IMAGE_IMPLEMENTATION "stb_image implementation" ON)
if(STB_IMAGE_IMPLEMENTATION)
add_definitions(-DSTB_IMAGE_IMPLEMENTATION)
endif()
option(POSITION_INDEPENDENT_LIB "Use position independent code for static library (if applicable)" ON)
set(SOURCE_FILES stb_image.h stb_truetype.h stb_dxt.h)
add_library(stb_static STATIC ${SOURCE_FILES})
target_compile_definitions(stb_static PUBLIC LIBRARY_HEADER_ONLY)
set_target_properties(stb_static PROPERTIES LINKER_LANGUAGE C)
set_target_properties(stb_static PROPERTIES
OUTPUT_NAME stb
POSITION_INDEPENDENT_CODE ${POSITION_INDEPENDENT_LIB})