【问题标题】:How to force cmake put options after filename?如何在文件名之后强制 cmake put 选项?
【发布时间】:2015-10-26 13:42:33
【问题描述】:

由于某种原因,以下现在可以正常工作

/usr/bin/c++  -lm -L/usr/X11R6/lib  -lX11 -lpthread  CMakeFiles/net.dir/advanced.cpp.o   -o net -rdynamic

但是这样做:

/usr/bin/c++  -lm -L/usr/X11R6/lib   CMakeFiles/net.dir/advanced.cpp.o  -lX11 -lpthread  -o net -rdynamic

我的问题是如何强制 CMake 将选项放在 /advanced.cpp.o 之后,以使编译成为可能。我使用的所有 CMake 选项都将我的自定义 GCC 选项放在编译器之前。

我的 cmake 文件

cmake_minimum_required (VERSION 2.6)
project (mnist)

set( CMAKE_VERBOSE_MAKEFILE on )

add_compile_options("-O2")
add_compile_options("-std=c++11")

SET( CMAKE_EXE_LINKER_FLAGS "-L/usr/X11R6/lib -lm -lpthread -lX11")

include_directories("${PROJECT_SOURCE_DIR}")

add_executable(net advanced.cpp)

【问题讨论】:

  • 获取此命令的最小 CMakeLists.txt 是多少?有些命令有 AFTER/BEFORE 语句。
  • 我尝试使用 SET(CMAKE_EXE_LINKER_FLAGS "-L/usr/X11R6/lib -lm -lpthread -lX11")
  • 你应该改用add_library
  • 来自cmake.org/cmake/help/v3.0/command/add_library.html:添加一个名为 的库目标,该目标从命令调用中列出的源文件构建。这对我有什么帮助?
  • 对不起,我的错误。我的意思是target_link_libraries

标签: gcc linker cmake


【解决方案1】:

使用target_link_libraries 而不是添加CMAKE_EXE_LINKER_FLAGS。 并在链接器标志中使用link_directories 而不是-L 选项。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-09-25
    • 2014-11-16
    • 2017-06-08
    • 2011-07-20
    • 1970-01-01
    • 2019-07-02
    • 2015-12-16
    • 2022-06-13
    相关资源
    最近更新 更多