Reputation: 505
I'm currently changing one of my projects to cmake for portably. Within the project directory I have a folder with an external library called "boclib", which is build by a regular makefile. I need to link my executable to "ProjectDir"/boclib/bin/libboc.a . My current attempt looks like this:
FIND_LIBRARY(BOCLIB boc ${PROJECT_BINARY_DIR}/boclib/bin)
Message(${BOCLIB})
TARGET_LINK_LIBRARIES(prod ${BOCLIB})
The Meassage output yields the correct library:
"AbsulutePathToProjectDir"/boclib/bin/libboc.a
Which outputs this, when linking:
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
There is no -L option for the boclib. What am I doing wrong?
Any help will be appreciated.
Upvotes: 0
Views: 869
Reputation: 10971
It seems there's two occurence of "boc" library in the g++ command you pasted, the first: boclib/bin/libboc.a
that should comes from your target_link_libraries call and a second one: -lboc
that must come from something else in your CMakeLists.txt.
You don't need that second one, if you find why it's added and remove it, it should be ok.
Upvotes: 1