我有一个
CMakeList.txt
它构建一个静态库:
project(SharedComponents C)
cmake_minimum_required(VERSION 3.12)
set(CMAKE_C_STANDARD 99)
include_directories(../include)
add_library(SharedComponents STATIC ATMIDIUtils.c ../include/ATMIDIUtils.h)
ATMIDIUtils.c公司
void splitMIDIValue(MIDILongValue value, MIDIValue * _Nonnull separated)
{
separated->MSB = (value >> 7) & ATMIDIMaxValue;
separated->LSB = value & ATMIDIMaxValue;
}
ATMIDIUtils.h公司
void splitMIDIValue(MIDILongValue value, MIDIValue * _Nonnull separated);
这编译得很好。然后我试图构建一个单元测试并与之链接,它显示缺少符号:
Undefined symbols for architecture x86_64:
"splitMIDIValue(unsigned short, MIDIValue*)", referenced from:
ATMIDIUtilsTests_test_split_midi_value_Test::TestBody() in ATMIDIUtilsTests.cxx.o
nm表示符号是外部的:
0000000000000330 (__TEXT,__text) external _splitMIDIValue
为什么我的图书室里的符号都不见了?
ATMIDIUtils.c
包含函数实现,但似乎没有编译到静态库中。