CMake:找不到图书馆

时间:2014-09-29 18:55:21

标签: c++ compiler-errors cmake

正如你在这里看到的形式(How to Specify the Compiler and To Compile Different Main Functions)我是CMake的新手,我仍然有问题。上一个问题帮助我理解了CMake,但我仍然遇到了问题。首先,即使我在CMakeLists.txt

中写了以下几行
set(CMAKE_CXX_COMPILER /opt/local/bin/g++)
set(CMAKE_CXX_FLAGS "-Wall -std=c++11")

使用的编译器似乎是Clang而不是g ++。另外,在编译时(我摆脱了所有代码错误),我得到了这样的信息:

[ 33%] Built target Output
[ 66%] Built target Vector
Scanning dependencies of target Output_test
[100%] Building CXX object tests/CMakeFiles/Output_test.dir/output_test.cpp.o
Linking CXX executable Output_test
ld: library not found for -lIO
collect2: error: ld returned 1 exit status
make[2]: *** [tests/Output_test] Error 1
make[1]: *** [tests/CMakeFiles/Output_test.dir/all] Error 2
make: *** [all] Error 2

你知道我做错了吗?

编辑: 在根文件夹

cmake_minimum_required (VERSION 2.8.11)
project (MC)

set(CMAKE_CXX_COMPILER /opt/local/bin/g++)
set(CMAKE_CXX_FLAGS "-Wall -std=c++11")

# Class definitions
add_subdirectory(IO)
add_subdirectory(math)

# Tests
add_subdirectory(tests)

在IO文件夹中:

add_library(Output Output.cpp)

1 个答案:

答案 0 :(得分:0)

看起来您在IO目录输出中命名了该库。因此,您希望在target_link_libraries命令中使用该名称作为可执行文件。就像@ComicSansMS所说的那样,不要使用set来覆盖编译器。见http://www.cmake.org/Wiki/CMake_FAQ#How_do_I_use_a_different_compiler.3F