如果有人回答我道歉,我已经搜索了一段时间,但找不到合适的答案。
我已经习惯了windows visual c ++,其中我使用头文件(*.h
)来声明类及其函数和源文件(*.cpp
),其中实际类的函数被详细编码。我现在使用Kdevelop在Linux下工作,使用cmake
。我已经创建了一些带有类的头文件并声明了它们的函数,然后在各自的源文件中编写了函数。每次我尝试构建时,都会收到错误,告知Class::function()
是未定义的引用。如果我在头文件中添加实际函数,构建工作正常。所以我假设cmake
没有正确链接头文件的相应源文件。我假设这会自动发生,但我现在猜测情况并非如此。我怎样才能做到这一点?对于我创建的每个头文件,使用源文件的完全相同的名称,将它们全部链接并构建?
如果已经回复,请发布一个链接,如果没有,我会想要一个简单的解释。我知道有很多方法可以做到这一点(autoconf
,make dep
等等?)但是现在我仍然坚持使用cmake
。
答案 0 :(得分:2)
以下是名为Test的项目的示例CMakeLists.txt,它将两个源文件链接到名为test的可执行文件中。
cmake_minimum_required( VERSION 2.6 )
project( Test )
add_executable( test test.cpp testlib.cpp )
如果要添加更多源文件,只需将它们添加到列表中即可。
答案 1 :(得分:1)
在C ++中,仅存在.cpp
文件并不一定意味着在构建项目时它将链接到您的项目中。在Visual Studio中创建新的.cpp
文件时,VS会自动将.cpp
文件添加到您的项目中,因此您无需考虑它。
使用不能牵着手的工具时,您必须手动将相关的.cpp
文件添加到项目文件中。有关如何执行此操作,请参阅CMake文档。看起来CMake Tutorial可能对此有所帮助。