我目前正在Eclipse中使用嵌入式C项目,交叉编译为M4 Cortex目标。该项目将创建3个独立的可执行文件:apple.hex,orange.hex和pear.hex。 " apple"源目录编译,构建和链接,不依赖于" orange"或"梨"。 "橙"源目录还可以编译,构建和链接,没有任何依赖关系。
然而,"梨"需要从" orange"访问许多.h和.c资产。我有很多尝试让我的CMakeLists.txt到#34;找到"和"链接"来自" orange"的代码到#梨;"但无济于事。这是我当前的CMakeLists.txt文件:
cmake_minimum_required(VERSION 3.0)
file(GLOB LD_FILE *gcc_nrf52.ld)
set(MY_APP_DIR ${CMAKE_SOURCE_DIR}/apps/orange)
create_application(
NAME
"pear"
PLATFORM
target
INCLUDE_DIRS
./
${MY_APP_DIR}
LINKER_SCRIPT
${LD_FILE}
SOURCES
${MY_APP_DIR}/foo.c
${MY_APP_DIR}/foo_bar.c
main.c
LIBRARIES
SomeLib_1
SomeLib_2
SomeLib_3
)
然而,编译器一直在抱怨,说它无法找到" foo.h"和" foo_bar.h"。
1)我是否需要单独创建一个橙色的静态库才能在梨中访问它?
2)如果我不需要创建一个静态库来访问梨的橙色,我该如何将橙色链接到梨?
3)我无法找到CMake放置目标文件的位置。他们在哪儿?
这个项目都在一个makefile下。
非常感谢任何帮助,谢谢!
我能够解决目录问题,以便将$ {MY_APP_DIR}中的所有包含目录链接到" Pear"。但是,出现了一些新问题。链接器找不到创建可执行映像所需的映射文件:
的/ usr /本地/ Caskroom / GCC-臂嵌入/ 5_4-2016q3,20160926 / GCC-臂-NONE-EABI-5_4-2016q3 / bin中/../ LIB / GCC /臂-无 - eabi / 5.4.1 /../../../../ arm-none-eabi / bin / ld:无法打开地图文件/Users/admin/Github/target/apps/pear/pear.map:No这样的文件或目录。
我不确定为什么没有创建地图。链接器(ld)是否仍然缺少文件?
答案 0 :(得分:0)
我会尽力回答你的问题
您没有将库链接到目标。
你需要这样的东西:
$
target_link_libraries(yourtarget yourlibraries)
在你的add_executable命令之后。
3)我无法找到CMake放置目标文件的位置。他们在哪?
默认情况下,CMake将其所有输出放在构建树中,因此除非您在cmake文件中使用$ {CMAKE_SOURCE_DIR}或$ {CMAKE_CURRENT_SOURCE_DIR},否则您应该在CMakeLists.txt文件所在的文件夹中找到输出文件。