下述CMakeList.txt文件
set(_FPTRU_OBJS "")
if(OQS_ENABLE_KEM_fptru_653)
add_library(fptru_653 OBJECT kem_fptru_653.c fptru_main/poly_mul_n653q/radix_ntt_n653.c fptru_main/cbd.c fptru_main/coding.c fptru_main/cpucycles.c fptru_main/fips202.c fptru_main/inverse.c fptru_main/kem.c fptru_main/pack.c fptru_main/pke.c fptru_main/poly.c fptru_main/randombytes.c fptru_main/reduce.c fptru_main/speed.c) #这里不能够有斜杠
target_compile_options(fptru_653 PUBLIC -DFPTRU_N=653)
target_include_directories(fptru_653 PRIVATE ${CMAKE_CURRENT_LIST_DIR}/fptru_main)
target_include_directories(fptru_653 PRIVATE ${CMAKE_CURRENT_LIST_DIR}/fptru_main/poly_mul_n653q)
set(_FPTRU_OBJS ${_FPTRU_OBJS} $<TARGET_OBJECTS:fptru_653>)
endif()
if(OQS_ENABLE_KEM_fptru_761)
add_library(fptru_761 OBJECT kem_fptru_761.c fptru_main/poly_mul_n761q/radix_ntt_n761.c fptru_main/cbd.c fptru_main/coding.c fptru_main/cpucycles.c fptru_main/fips202.c fptru_main/inverse.c fptru_main/kem.c fptru_main/pack.c fptru_main/pke.c fptru_main/poly.c fptru_main/randombytes.c fptru_main/reduce.c fptru_main/speed.c) #这里不能够有斜杠
target_compile_options(fptru_761 PUBLIC -DFPTRU_N=761)
target_include_directories(fptru_761 PRIVATE ${CMAKE_CURRENT_LIST_DIR}/fptru_main)
target_include_directories(fptru_761 PRIVATE ${CMAKE_CURRENT_LIST_DIR}/fptru_main/poly_mul_n761q)
set(_FPTRU_OBJS ${_FPTRU_OBJS} $<TARGET_OBJECTS:fptru_761>)
endif()
set(FPTRU_OBJS ${_FPTRU_OBJS} PARENT_SCOPE)
在编译过程中报错
/usr/bin/ld: src/kem/fptru/CMakeFiles/fptru_761.dir/fptru_main/fips202.c.o: in function `sha3_256':
fips202.c:(.text.sha3_256+0x0): multiple definition of `sha3_256'; src/kem/fptru/CMakeFiles/fptru_653.dir/fptru_main/fips202.c.o:fips202.c:(.text.sha3_256+0x0): first defined here
/usr/bin/ld: src/kem/fptru/CMakeFiles/fptru_761.dir/fptru_main/fips202.c.o: in function `sha3_512':
fips202.c:(.text.sha3_512+0x0): multiple definition of `sha3_512'; src/kem/fptru/CMakeFiles/fptru_653.dir/fptru_main/fips202.c.o:fips202.c:(.text.sha3_512+0x0): first defined here
/usr/bin/ld: src/kem/fptru/CMakeFiles/fptru_761.dir/fptru_main/inverse.c.o: in function `uint32_divmod_uint14':
inverse.c:(.text.uint32_divmod_uint14+0x0): multiple definition of `uint32_divmod_uint14'; src/kem/fptru/CMakeFiles/fptru_653.dir/fptru_main/inverse.c.o:inverse.c:(.text.uint32_divmod_uint14+0x0): first defined here
/usr/bin/ld: src/kem/fptru/CMakeFiles/fptru_761.dir/fptru_main/inverse.c.o: in function `int32_divmod_uint14':
inverse.c:(.text.int32_divmod_uint14+0x0): multiple definition of `int32_divmod_uint14'; src/kem/fptru/CMakeFiles/fptru_653.dir/fptru_main/inverse.c.o:inverse.c:(.text.int32_divmod_uint14+0x0): first defined here
/usr/bin/ld: src/kem/fptru/CMakeFiles/fptru_761.dir/fptru_main/inverse.c.o: in function `uint32_mod_uint14':
inverse.c:(.text.uint32_mod_uint14+0x0): multiple definition of `uint32_mod_uint14'; src/kem/fptru/CMakeFiles/fptru_653.dir/fptru_main/inverse.c.o:inverse.c:(.text.uint32_mod_uint14+0x0): first defined here
似乎是因为fptru_761何fptru_653重用了相同的代码导致的,我应该如何修改CMakeList.txt文件呢?