GCC6中的未定义引用到' rt',' pthread',' stdc ++ fs'

时间:2016-05-17 14:22:40

标签: c++ gcc linker cmake

在尝试构建我的示例项目时,刚刚面对ubuntu上的GCC, 发现需要链接的那三个库(来自主题)。 并且还发现' -lxxx'的顺序参数在命令行中很重要

但是我使用cmake作为构建系统,并且可以找到适用于cmake的内容。

目前这是:

if (${GCC})
     target_link_libraries(${PROJECT_NAME} rt pthread stdc++fs)
endif (${GCC})

它并不适合我,链接器仍然无法从所有引用的库中找到引用的符号。

有人可以从cmake的角度帮助这个库链接吗?

1 个答案:

答案 0 :(得分:4)

按照目前的情况,你的条件总是假的(变量不存在AFAIK),所以它里面的语句永远不会被考虑在内!

您需要更改:

if(${GCC})

要:

if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")

或者:

if(CMAKE_COMPILER_IS_GNUCXX)

现在检查C ++编译器是否为gcc / g ++。