|
通过传递参数给CMakeLists.txt来控制编译配置for x86 and aarch64
上接这个:http://www.ai111.vip/thread-1312-1-1.html 交叉编译fftw-3.3.10源码 for aarch64 ARMv8架构(成功)
cmake "-DMY_TARGET=aarch64" -DCMAKE_C_COMPILER=aarch64-linux-gnu-gcc -DCMAKE_CXX_COMPILER=aarch64-linux-gnu-g++ ..
cmake "-DMY_TARGET=pc" ..
message(STATUS "自己传进来的参数:MY_TARGET=" ${MY_TARGET})
if(MY_TARGET STREQUAL "pc")
message(STATUS "pc,最终运行在自己主机上")
elseif(MY_TARGET STREQUAL "aarch64")
message(STATUS "aarch64,交叉编译后运行在树莓派arm")
else(MY_TARGET)
message(FATAL_ERROR "运行目标是一个非法参数")
endif()
- cmake_minimum_required(VERSION 3.15)
- project("main") # 我加的
- SET(CMAKE_CXX_STANDARD 14) # 我加的
- # set(ALL_SRCS "bp_img_4T4R_os_cfar.cpp" "os_cfar_2d.cpp")
- # set(ALL_SRCS "bp_img_4T4R_os_cfar.cpp")
- # set(ALL_SRCS "dm01.cpp")
- # set(ALL_SRCS "eigen_等差_矩阵重复_resize.cpp")
- message(STATUS "自己传进来的参数:MY_TARGET=" ${MY_TARGET})
- if(MY_TARGET STREQUAL "pc")
- message(STATUS "pc,最终运行在自己主机上")
- elseif(MY_TARGET STREQUAL "aarch64")
- message(STATUS "aarch64,交叉编译后运行在树莓派arm")
- else(MY_TARGET)
- message(FATAL_ERROR "运行目标是一个非法参数 or 清除cmake cache文件")
- endif()
- set(ALL_SRCS "7_FFTW编程.cpp")
- message("项目的源码目录:" ${PROJECT_SOURCE_DIR})
- include_directories(${PROJECT_SOURCE_DIR}/include/) # 自己的头文件
- include_directories("/home/jiang/jjj_eigen_works/eigen-3.4") # eigen的纯头文件库
- # 编译目标是aarch平台的:
- if(MY_TARGET STREQUAL "aarch64")
- message(STATUS "aarch64,引入头文件和库文件")
- include_directories("/home/jiang/my_cross_compile/all_dependence_software_installed/include")
- link_directories("/home/jiang/my_cross_compile/all_dependence_software_installed/lib")
- endif()
- add_executable(main ${ALL_SRCS})
- # 编译目标是pc端,头文件有了:/usr/local/fftw3.h
- if(MY_TARGET STREQUAL "pc")
- message(STATUS "pc,目标链接库")
- target_link_libraries(main fftw3f)
- elseif(MY_TARGET STREQUAL "aarch64")
- message(STATUS "aarch64,目标链接静态库")
- target_link_libraries(main libfftw3f.a)
- endif()
复制代码
源文件:放附件
|
|