对"func()"(多文件编译)的未定义引用

undefined reference to `func()' (multi-file compilation)

本文关键字:未定义 引用 编译 func 文件      更新时间:2024-09-21

我对c++上的多文件编译很陌生,我正试图通过测试来理解它。但在下面的例子中,我得到了一个错误undefined reference to `func()',我不明白为什么。提前感谢!

Main.cpp

#include <iostream>
#include "file1.h"
int main() {
func();
return 0;
}

文件1.h

#ifndef UNTITLED1_FILE1_H
#define UNTITLED1_FILE1_H
#include <iostream>
void func();
#endif //UNTITLED1_FILE1_H

文件1.cpp

#include "file1.h"
void func() {
std::cout << "Test" << std::endl;
}

CMAKELIST

cmake_minimum_required(VERSION 3.17)
project(untitled1)
set(CMAKE_CXX_STANDARD 14)
add_executable(untitled1 main.cpp file1.h)

基本上您还没有包含所有的源文件。此外,您还没有指定包含目录。

cmake_minimum_required(VERSION 3.17)
# Never name your project the same thing as any of your targets
project(COOL_PROJECT)
set(CMAKE_CXX_STANDARD 14)
add_executable(untitled1)
# You must include all source files, header files are optional.
# However adding header files explicitly will result in better IDE support
#
# Prefer to add source files using target_sources instead
target_sources(untitled1 PRIVATE
main.cpp
file1.cpp
file1.h
)
# Add your current directory as an include directory.
target_include_directories(untitiled PRIVATE ${CMAKE_CURRENT_LIST_DIR})

顺便说一句,套管很重要。因此,请确保文件名大小写匹配。

File1.cpp!=file1.cpp