0

我目前正在将我的一个项目更改为可移植的 cmake。在项目目录中,我有一个文件夹,其中包含一个名为"boclib"的外部库,该库由常规 makefile 构建。我需要将我的可执行文件链接到"ProjectDir"/boclib/bin/libboc.a。我目前的尝试如下所示:

  FIND_LIBRARY(BOCLIB boc ${PROJECT_BINARY_DIR}/boclib/bin)
  Message(${BOCLIB})
  TARGET_LINK_LIBRARIES(prod ${BOCLIB})

Meassage 输出产生正确的库:

"AbsulutePathToProjectDir"/boclib/bin/libboc.a

链接时输出:

g++ -lm -ldl CMakeFiles/prod.dir/src/BocData.cpp.o CMakeFiles/prod.dir/src/delay.cpp.o     CMakeFiles/prod.dir/src/leoni.cpp.o CMakeFiles/prod.dir/src/main.cpp.o CMakeFiles/prod.dir/src/scope.cpp.o CMakeFiles/prod.dir/src/SerialCom.cpp.o CMakeFiles/prod.dir/src/tester.cpp.o CMakeFiles/prod.dir/src/Utils.cpp.o  -o prod  boclib/bin/libboc.a -lboost_program_options -lboost_system -lboost_filesystem -lboost_serialization -lboc

boclib 没有-L 选项。我究竟做错了什么?

任何帮助将不胜感激。

4

1 回答 1

1

在您粘贴的 g++ 命令中似乎出现了两次“boc”库,第一次:boclib/bin/libboc.a应该来自您的 target_link_libraries 调用,第二次:-lboc必须来自 CMakeLists.txt 中的其他内容。

您不需要第二个,如果您找到添加它的原因并将其删除,它应该没问题。

于 2013-06-08T12:46:32.297 回答