[CMake] Object file as first one in link.txt file
Jakub Zakrzewski
jzakrzewski at e2e.ch
Thu Oct 17 09:18:23 EDT 2013
Hi.
I may be wrong, but I suppose, that CMake puts linker flags BEFORE all the files to link and you use the flags to link libraries. For linking libraries you should be using the target_link_libraries CMake command.
--
Gruesse,
Jakub
From: cmake-bounces at cmake.org [mailto:cmake-bounces at cmake.org] On Behalf Of Juan Pablo Hernandez Vogt
Sent: Donnerstag, 17. Oktober 2013 12:01
To: cmake at cmake.org
Subject: [CMake] Object file as first one in link.txt file
Hello everybody,
I moving a makefile to cmake, and after errors I could check that order in link chain was important.
1) CMake generates this link.txt (error when linking)
/usr/bin/c++ -lfusion_io -ladios -lmxml -lmpi -lopen-rte -lopen-pal -lpthread -lstdc++ CMakeFiles/niio-main.dir/main.cpp.o -o niio-main -rdynamic -L/home/testuser/dev/niio/lib -L/home/testuser/dev/niio/openmpi/lib
2) Desired linking that works:
/usr/bin/c++ CMakeFiles/niio-main.dir/main.cpp.o -lfusion_io -ladios -lmxml -lmpi -lopen-rte -lopen-pal -lpthread -lstdc++ -o niio-main -rdynamic -L/home/testuser/dev/niio/lib -L/home/testuser/dev/niio/openmpi/lib
My question is, how to fix in my CMakeLists.txt to have main.cpp.o first in the sequence of the link command?
My current code is:
set(TARGET_NAME "niio-main")
link_directories("${PROJECT_SOURCE_DIR}/lib")
link_directories("${PROJECT_SOURCE_DIR}/openmpi/lib")
add_executable(${TARGET_NAME} main.cpp)
include_directories("${PROJECT_SOURCE_DIR}")
include_directories("${PROJECT_SOURCE_DIR}/openmpi/include")
add_definitions( -DOMPI_SKIP_MPICXX -DDEBUG -DNI_IO -DNI_MPI )
set_target_properties(${TARGET_NAME} PROPERTIES COMPILE_FLAGS "-fPIC -g -Wall -Wno-deprecated")
set_target_properties(${TARGET_NAME} PROPERTIES LINK_FLAGS "-lfusion_io -ladios -lmxml -lmpi -lopen-rte -lopen-pal -lpthread -lstdc++")
Thank you very much,
JP
More information about the CMake
mailing list