东方耀AI技术分享

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 1823|回复: 0
打印 上一主题 下一主题

[C/C++] 通过传递参数给CMakeLists.txt来控制编译配置for x86 and aarch64

[复制链接]

1365

主题

1856

帖子

1万

积分

管理员

Rank: 10Rank: 10Rank: 10

积分
14437
QQ
跳转到指定楼层
楼主
发表于 2021-12-22 14:06:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
通过传递参数给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()


  1. cmake_minimum_required(VERSION 3.15)

  2. project("main")     # 我加的

  3. SET(CMAKE_CXX_STANDARD 14)   # 我加的

  4. # set(ALL_SRCS "bp_img_4T4R_os_cfar.cpp" "os_cfar_2d.cpp")
  5. # set(ALL_SRCS "bp_img_4T4R_os_cfar.cpp")
  6. # set(ALL_SRCS "dm01.cpp")
  7. # set(ALL_SRCS "eigen_等差_矩阵重复_resize.cpp")

  8. message(STATUS "自己传进来的参数:MY_TARGET=" ${MY_TARGET})
  9. if(MY_TARGET STREQUAL "pc")
  10.     message(STATUS "pc,最终运行在自己主机上")
  11. elseif(MY_TARGET STREQUAL "aarch64")
  12.     message(STATUS "aarch64,交叉编译后运行在树莓派arm")
  13. else(MY_TARGET)
  14.     message(FATAL_ERROR "运行目标是一个非法参数 or 清除cmake cache文件")
  15. endif()


  16. set(ALL_SRCS "7_FFTW编程.cpp")


  17. message("项目的源码目录:" ${PROJECT_SOURCE_DIR})
  18. include_directories(${PROJECT_SOURCE_DIR}/include/)   # 自己的头文件
  19. include_directories("/home/jiang/jjj_eigen_works/eigen-3.4")   # eigen的纯头文件库

  20. # 编译目标是aarch平台的:
  21. if(MY_TARGET STREQUAL "aarch64")
  22.     message(STATUS "aarch64,引入头文件和库文件")
  23.     include_directories("/home/jiang/my_cross_compile/all_dependence_software_installed/include")
  24.     link_directories("/home/jiang/my_cross_compile/all_dependence_software_installed/lib")
  25. endif()




  26. add_executable(main ${ALL_SRCS})


  27. # 编译目标是pc端,头文件有了:/usr/local/fftw3.h
  28. if(MY_TARGET STREQUAL "pc")
  29.     message(STATUS "pc,目标链接库")
  30.     target_link_libraries(main fftw3f)
  31. elseif(MY_TARGET STREQUAL "aarch64")
  32.     message(STATUS "aarch64,目标链接静态库")
  33.     target_link_libraries(main libfftw3f.a)
  34. endif()

复制代码



源文件:放附件




7_FFTW编程.cpp

3.91 KB, 阅读权限: 10, 下载次数: 0

让天下人人学会人工智能!人工智能的前景一片大好!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|人工智能工程师的摇篮 ( 湘ICP备2020019608号-1 )

GMT+8, 2024-5-5 17:33 , Processed in 0.185403 second(s), 21 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表