(Linux)无法通过cmake链接存档

(Linux)无法通过cmake链接存档,cmake,Cmake,在命令行上,以下命令生成可执行文件: g++ -o a.out main.cpp class1.cc class2.cc /usr/lib/libgsl.a /usr/lib/libgslcblas.a 然而,我不确定如何让cmake正常工作。 当我添加一行时,如 include_directories(/usr/lib/) link_libraries(usr/lib/libgsl.a usr/libgslcblas.a) 配置似乎正常,但构建失败: CMakeFiles/kmv.dir/

在命令行上,以下命令生成可执行文件:

g++ -o a.out main.cpp class1.cc class2.cc /usr/lib/libgsl.a /usr/lib/libgslcblas.a
然而,我不确定如何让cmake正常工作。 当我添加一行时,如

include_directories(/usr/lib/)
link_libraries(usr/lib/libgsl.a usr/libgslcblas.a)
配置似乎正常,但构建失败:

CMakeFiles/kmv.dir/main.o: In function `main':
main.cpp:27: undefined reference to `gsl_matrix_alloc'
main.cpp:35: undefined reference to `gsl_matrix_fscanf'
collect2: ld returned 1 exit status
make[2]: *** [kmv] Error 1
make[1]: *** [CMakeFiles/kmv.dir/all] Error 2
make: *** [all] Error 2
*** Failed ***
似乎是synthax的问题。欢迎任何提示。谢谢。

代替

include_directories(/usr/lib)
link_libraries(usr/lib/libgsl.a usr/libgslcblas.a)
试一试

其中targetName是要创建的输出二进制文件的名称。路径
/usr/lib
应该已经在CMake的默认库搜索路径中,因此您不必指定该路径,但是如果您必须指定自定义库路径,您可以这样做

link_directories(/some/custom/library/path)

include\u directories
CMake指令用于添加标题搜索路径,而不是库搜索路径…

可能不推荐使用链接库


尝试改用target\u link\u库。

非常感谢,它可以工作(cblas被gslcblas取代)。实际上,没有必要指定路径/usr/lib。奇怪的是,对于命令行(g++-o…)来说,有必要指定它。很高兴提供帮助--现在,知道这个解决方案是有效的,您愿意接受这个答案吗汉克斯,你的答案是对的。我该怎么做才能(正式地)接受它?此外,无需在CmakeLists.txt中指定类。add_executable(target main.cpp)已经完成了这项工作。请阅读有关提问的常见问题解答,特别是关于如何回答问题的最后一部分——不要离题,但这个答案是如何获得我发布的奖励的?几个月前很明显,我下面的回答至少被OP非正式地接受了(见评论)。就连我也不明白这一点。我的回答中唯一的加分是在cmake域上的正式邮件。好的,我得到了@hatboyzero问题的答案:[如果你在7天内没有奖励你的赏金(加上宽限期),在赏金开始后以至少2票以上的得票率创建的得票最高的答案将被授予赏金金额的一半。由于您已发布赏金,您无法将其发送给自己。唯一符合标准的答案是我的答案。]我不知道赏金不能授予发起方。谢谢:-)
link_directories(/some/custom/library/path)