sách gpt4 ai đã đi

Thực hành tốt nhất để xây dựng chương trình C (cho bản dựng CMake)

In lại 作者:行者123 更新时间:2023-12-04 12:12:10 27 4
mua khóa gpt4 Nike

我有一个 C 程序,是一位离开的开发人员留给我的。我试图弄清楚他到底在做什么,并将软件重新安排成更合乎逻辑的东西,这样我就可以更轻松地构建它。我正在使用 CMake 构建,而他使用的是 Make。

有一个 src/文件夹,里面有几个源文件,其中大约有 4 个有 main() 方法。具有 main() 方法的文件位于更像是实用程序、工具或其他名称的文件中。这让我觉得很奇怪,因为他还有一个 lib 文件夹,里面还有一些其他的东西,看起来更像图书馆。我是否应该将那些主要方法拆分为“驱动程序”源文件,并将这些文件中也定义的方法作为其他库?如果我这样做,我知道如何让 CMake 去寻找一个库并构建它并将其链接到驱动程序以供执行。

如果在 src 文件夹中构建那些“库”源文件是可以接受的,我应该设置 CMake 一次构建该文件夹中的所有内容,还是应该至少创建一个目录结构一些逻辑上的分离?

只是一个想法,这里是当前的目录结构

dự án
.../src
......file1.c
......file2.c <-has a main() as well as other methods
......file3.c
......file4.c <- has a main() as well as other methods
......file5.c
.../lib
....../lib1
........./file1.c <-references top level include folder files
........./file2.c
....../lib2
........./file1.c <-refs top level and local include files
........./file2.c
........./file2.h
.../scripts
.../include
.
.
.

对于重构此构建或在 CMake 中配置它的最佳实践的任何建议,我们表示赞赏。

1 Câu trả lời

答案永远不会太晚,所以我建议:

dự án
.../CMakeLists.txt
include_directories(include/)
add_subdirectory(lib/lib1)
add_subdirectory(lib/lib2)
add_subdirectory(src/)

.../lib/lib1/CMakeLists.txt
add_library(lib1 file1.c file2.c)

.../src/CMakeLists.txt
add_executable(test1 test1.c test2.c)
target_link_libraries(test1 lib1)

为什么会这样:include_directories 在子目录中派生,add_subdirectory 中的所有目标(以及库)都在整个项目中导出。

关于c - 构建 C 程序的最佳实践(用于 CMake 构建),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11524626/

27 4 0
行者123
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com