【问题标题】:how would I compile multiple files in a folder? [duplicate]如何在一个文件夹中编译多个文件? [复制]
【发布时间】:2021-05-03 16:24:35
【问题描述】:

所以,我决定用 C++ 完全编写我的游戏(回合制 RPG)。

我在 youtube 上看到其他人创建了一个包含不同 cpp 文件的文件夹,然后他们以某种方式编译了所有文件。

我的问题是,如何在一个文件夹中编译多个文件?

如果需要,我正在使用 MSYS。

【问题讨论】:

标签: c++


【解决方案1】:

使用 cmake

您可以编写一个makefile,它将所有要编译的文件包含在一个文件夹中,或者为了更好的管理,您可以使用cmake将所有文件编译到一个库中并再次使用它们。通过使用 cmake,您可以有效地维护和构建庞大的代码库。

比方说,你的 Main 目录有 main.cpp 文件,里面有一个 src 文件夹,里面有所有其他要编译的文件,

然后你可以创建一个CMakeLists.txt文件,内容如下

set(CMAKE_C_COMPILER "gcc")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O2 -std=c++14 ")
add_subdirectory(src)
add_executable(main main.cpp)
target_link_libraries(main compiledLibrariesfrmSrcFolder)

然后在您的src 目录中导航以创建另一个 CMakeLists.txt。这将控制您需要编译并添加到主程序的所有文件。

add_library(compiledLibrariesfrmSrcFolder STATIC
a.cpp
b.cpp
c.cpp
d.cpp)

否则,您还可以使用GLOB_RECURSE 将所有 .cpp 文件添加到该子目录中

完成后,您可以在主目录中创建一个新文件夹并运行以下命令 mkdir build

cd build
cmake ../
make 

这会编译并在 build 文件夹中生成您的可执行文件。

注意:只是为了详细说明,在构建中执行此操作的主要原因是因为 cmake 在此过程中创建了许多临时文件,为了将它们与您的主代码隔离,您将在构建目录中进行构建。

cmake ../ ,这里 cmake 接受一个参数,该参数是主 CMakeLists.txt 文件的位置。在我们的例子中,它将是构建之前的目录。这将创建 MakeFile,其中包含编译和链接所有其他必要文件的指令。

make 编译和链接文件并生成可执行文件。

【讨论】:

  • 如果您要与他人共享源代码,CMake 也将有很大帮助,因为除了生成 Makefile 之外,您还可以为其他编译器(如 mscv / Visual Studio 或 XCode 或 qt-creator 等 IDE)生成项目文件.
  • 非常感谢!!我会试试这个。
猜你喜欢
  • 2018-08-06
  • 2013-10-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-12-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多