我在Linux 64位上使用CMake時遇到問題。我在C中有一個示例,它必須鏈接到一個庫(xr_arp.a),該庫對另一個庫(libcrypto.a)具有鏈接依賴關係。我沒有建立我的示例代碼下面的Makefile成功鏈接:使用依賴於另一個庫的庫的CMake項目
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 [email protected] $(OBJFILES) $(LIBS)
clean:
rm -rf *.o $(TARGET)
.SUFFIXES: .c .o
.c.o:
$(CC) -Wall $(CFLAGS) -c $<
不過,我想這個Makefile使用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
)
有人能指出我出去這兩個文件有什麼區別?爲什麼它和makefile一起工作,它不在CMake中?有沒有什麼程序可以用來強制xr_arp.a和libcrypto.a之間的鏈接?請注意,這兩個庫都是第三方的,不是我的。
謝謝你做到了! – thewalrusnp