1. 说明
使用clang++10.1编译报错:
/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/crt1.o: in function `_start':
(.text+0x24): undefined reference to `main'
clang-10: error: linker command failed with exit code 1 (use -v to see invocation)
make[2]: *** [CMakeFiles/main.dir/build.make:104: main] Error 1
make[1]: *** [CMakeFiles/Makefile2:97: CMakeFiles/main.dir/all] Error 2
make: *** [Makefile:103: all] Error 2
2.分析
- 2.1 编译器提示的很清楚: 没有main函数。
- 2.2 我的CMakeLists.txt代码:
......
## 这段代码是报错提示相关的 ##
add_executable(main ${sp_src} ${sp_inc})
target_sources(main PRIVATE ${sp_src} ${sp_inc} )
....
说明: ${sp_src}的源文件代码中,没有main函数。 因为这里是要创建一个可执行程序,所以修改方式: 将正确的含入口函数main的源文件包含进来即可。
- 2.3 改进
file(GLOB_RECURSE main_src ${CMAKE_CURRENT_SOURCE_DIR}/exam/*.cpp)
add_executable(main ${main_src} ${sp_inc})
# .h and .cxx files
target_sources(main PRIVATE ${main_src} ${sp_inc} )