由于某种原因,以下现在可以正常工作
/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将选项AFTER /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)
答案 0 :(得分:1)
使用target_link_libraries
而非添加CMAKE_EXE_LINKER_FLAGS
。
并在链接器标志中使用link_directories
而不是-L
选项。