我在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