我知道沒有直接的方式來將make文件轉換爲cmake,但需要一些指導。我有一個嵌入式機器的make文件,並且希望使用cmake繼續前進。需要一些幫助創建一個cmake文件來讓我的項目工作...從cmake轉換
我在linux開發機器上交叉編譯運行linux內核的嵌入式arm。
目前,所有文件都在同一個文件夾中。我的工作將其移動到這個結構: -build -documentation - 包括 -src 的CMakeLists.txt -test 的CMakeLists.txt
我想把頭文件在/包括文件夾, src文件夾中的c/cpp文件。
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 [email protected] $<
%.o: %.c $(GPIOHEADERS)
$(CC) $(CCFLAGS) -c -o [email protected] $< -mcpu=arm9
$(OUT): $(OBJECTS) $(GPIOOBJECTS)
$(CC) $(CCFLAGS) -o [email protected] $^ $(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過程,但沒有成功。 未定義的參考文獻等...
想法?
*****編輯**更新src/CMakeLists.txt以包含來自測試的註釋和更新。
'set(SOURCES ./*.c ./*。cpp)'我上次檢查過的時候必須使用FILE命令手動填充,像這樣:http://stackoverflow.com/a/3201211/487892 – drescherjm
我不使用globbing,因爲我在創建新文件時將每個文件添加到我的源變量中。即使我的'CMake'項目包含幾千個源文件。 – drescherjm
@drescherjm正確。完全是猜測和希望的。我現在正在放入我的實際文件。 – wegunterjr