东方耀AI技术分享
标题:
通过传递参数给CMakeLists.txt来控制编译配置for x86 and aarch64
[打印本页]
作者:
东方耀
时间:
2021-12-22 14:06
标题:
通过传递参数给CMakeLists.txt来控制编译配置for x86 and aarch64
通过传递参数给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()
复制代码
源文件:放附件
欢迎光临 东方耀AI技术分享 (http://www.ai111.vip/)
Powered by Discuz! X3.4