У меня проблема с использованием CMake в Linux 64 bit.У меня есть пример на C, который должен ссылаться на библиотеку (xr_arp.a), которая имеет зависимость от ссылки на другую библиотеку (libcrypto.a).Следующий make-файл, который я сделал для создания моего примера кода, успешно связывается:
CFLAGS = -I../Common -I../xr -I../../../openssl/include
LIBS = ../xr/xr_arp.a ../../../openssl/lib/libcrypto.a
TARGET = sample
OBJFILES = sample.o
all: $(TARGET)
$(TARGET): Makefile $(OBJFILES)
$(CC) -o $@ $(OBJFILES) $(LIBS)
clean:
rm -rf *.o $(TARGET)
.SUFFIXES: .c .o
.c.o:
$(CC) -Wall $(CFLAGS) -c $<
Однако я хотел бы преобразовать этот make-файл для использования CMake.Когда я использую следующий файл CMakeLists.txt, я получаю, что xr_arp.c имеет неопределенную ссылку на `SHA1 ', так как кажется, что он не может связать xr_arp.a с libcrypto.a:
cmake_minimum_required(VERSION 2.8)
project (SAMPLE C)
set(CMAKE_C_FLAGS "-Wall")
include_directories(
${CMAKE_CURRENT_SOURCE_DIR}
${CMAKE_CURRENT_SOURCE_DIR}/../Common
${CMAKE_CURRENT_SOURCE_DIR}/../xr
)
add_executable(
sample
sample.c
)
target_link_libraries(
sample
${CMAKE_CURRENT_SOURCE_DIR}/../../../openssl/lib/libcrypto.a
${CMAKE_CURRENT_SOURCE_DIR}/../xr/xr_arp.a
)
Может кто-то указатьменя в чем разница между этими двумя файлами?Почему он работает с make-файлом, а не с CMake?Есть ли какая-либо процедура, которую я мог бы использовать для принудительного связывания между xr_arp.a и libcrypto.a?Обратите внимание, что обе библиотеки являются сторонними и не моими.