C++ CMake:找不到库

C++ CMake:找不到库,c++,compiler-errors,cmake,C++,Compiler Errors,Cmake,正如您在这里看到的表单(),我是CMake的新手,我仍然有问题。上一个问题帮助我理解了CMake,但我仍然有问题。首先,即使我在CMakeLists.txt中写了以下几行 set(CMAKE_CXX_COMPILER /opt/local/bin/g++) set(CMAKE_CXX_FLAGS "-Wall -std=c++11") 使用的编译器似乎是铿锵的,而不是g++。此外,在编译时(我消除了所有代码错误),我还获得以下消息: [ 33%] Built target Output [ 6

正如您在这里看到的表单(),我是CMake的新手,我仍然有问题。上一个问题帮助我理解了CMake,但我仍然有问题。首先,即使我在CMakeLists.txt中写了以下几行

set(CMAKE_CXX_COMPILER /opt/local/bin/g++)
set(CMAKE_CXX_FLAGS "-Wall -std=c++11")
使用的编译器似乎是铿锵的,而不是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)

看起来您在IO目录输出中命名了库。因此,您希望在可执行文件的target_link_libraries命令中使用该名称。就像@ComicSansMS所说的,不要使用set重写编译器。请参见

您可能希望编辑问题,以包括检查
IO
库的
CMakeLists.txt
文件的一部分。@JoachimPileborg完成,抱歉。您是否尝试删除CMake生成的所有旧文件并重新开始?@Svalorzen是,多次。请不要试图通过在
CMakeLists.txt
中设置
CMake\u CXX\u编译器来强制CMake使用特定的编译器。除非您正在进行交叉编译,否则处理这个变量是一个可怕的想法。相反,让用户选择正确的编译器。