gpt4 book ai didi

c++ - 需要一些帮助来创建一个 cmake 文件以使我的项目正常工作...从 cmake 转换

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:44:07 25 4
gpt4 key购买 nike

我知道没有直接的方法可以将 make 文件转换为 cmake,但需要一些指导。我有一个嵌入式机器的 make 文件,想继续使用 cmake。

我正在 linux 开发机器上为运行 linux 内核的嵌入式 arm 进行交叉编译。

目前,所有文件都在同一个文件夹中。我正在努力将它们移动到这个结构中:- build -文档-包括-src CMakeLists.txt-测试CMakeLists.txt

我想将头文件放在/includes 文件夹中,将 c/cpp 文件放在 src 文件夹中。

OUT = enterprise.exe
CC = g++
CCFLAGS = -lrt -Wall -pthread

HEADERS = logobj.h message.h channel.h utilities.h parameter.h mycan.h vthread.h logger.h protocol_quest.h protocol_can.h protocol_io.h protocol_navitrol.h qt_nav.h qt_battery.h qt_iodealer.h enterprise.h
OBJECTS = logobj.o message.o channel.o utilities.o parameter.o mycan.o vthread.o logger.o protocol_quest.o protocol_can.o protocol_io.o protocol_navitrol.o qt_nav.o qt_battery.o qt_iodealer.o enterprise.o

GPIOHEADERS = evgpio.h
GPIOOBJECTS = evgpio.o

%.o: %.c $(HEADERS)
$(CC) $(CCFLAGS) -c -o $@ $<

%.o: %.c $(GPIOHEADERS)
$(CC) $(CCFLAGS) -c -o $@ $< -mcpu=arm9

$(OUT): $(OBJECTS) $(GPIOOBJECTS)
$(CC) $(CCFLAGS) -o $@ $^ $(LIB)

clean:
-rm -f $(OBJECTS) $(GPIOOBJECTS)
-rm -f $(OUT)

我认为它看起来像这样:

顶级文件夹 CMakeLists.txt

cmake_minimum_required(VERSION 3.5)
project(enterprise)
set(CMAKE_CXX_COMPILER /opt/toolchains/arm-2008q3/bin/arm-none-linux-gnueabi-g++)
set(CMAKE_SYSTEM_PROCESSOR arm)
set(COMPILE_FLAGS "-lrt -Wall -pthread")
add_subdirectory(src)

/src文件夹CMakeLists.txt

include_directories(${CMAKE_CURRENT_SOURCE_DIR})   //haven't moved the headers yet
set(SOURCES ${CMAKE_CURRENT_SOURCE_DIR} filename1.cpp filename2.cpp etc.cpp)
set(vendorLib filenameVendor1.o filenameVendor2.o etcVendor.o)

add_executable(enterprise ${SOURCES})
target_link_libraries(enterprise vendorLib)

我的一部分认为应该有一些链接,但不确定在哪里。此时,我可以通过 cmake 进程,但在 make 上失败。 undefined reference 等...

想法?

*****编辑** 更新了 src/CMakeLists.txt 以包含来自测试的评论和更新。

最佳答案

您需要将所有 源文件添加到可执行文件中:

add_executable(enterprise ${SOURCES})

或者至少添加构建可执行文件所需的所有源文件。

如果你有库,那么你也需要添加它们:

target_link_libraries(enterprise rt)

更多信息please read the documentation .

关于c++ - 需要一些帮助来创建一个 cmake 文件以使我的项目正常工作...从 cmake 转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39276484/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com