[CMake] How to link Intel MKL
Bill Hoffman
bill.hoffman at kitware.com
Fri Nov 20 11:10:25 EST 2009
董理 wrote:
> Hi, all,
>
> My program (Fortran 90) uses the "trust region nonlinear least squares
> problem" (dtrnlsp) subroutines, how can I setup cmake?
>
> There is a module that calls the dtrnlsp subroutines, and one main
> program uses that module.
>
> I have wrote the following statement in the CMakeLists.txt with module:
> "
> add_library(<module> <module source file>)
>
> set_target_properties(<module>
> PROPERTIES
> LINK_FLAGS "-I${MKL_INCLUDE_DIRS} -Wl,--start-group
> ${MKL_LIBRARIES}/libmkl_solver_lp64_sequential.a
> ${MKL_LIBRARIES}/libmkl_core.a -Wl,--end-group"
> )
> "
> where MKL_INCLUDE_DIRS and MKL_LIBRARIES are set to the correct path.
> The error output is:
> "
> ......
> ...... undefined reference to `dtrnlsp_init_'
> ......
> "
That looks way to platform specific...
include_directories(${MKL_INCLUDE_DIRS})
target_link_libraries(<module>
${MKL_LIBRARIES}/libmkl_solver_lp64_sequential.a
${MKL_LIBRARIES}/libmkl_core.a )
Or, this would be even better:
find_library( MSOLVE mkl_solver_lp64_sequential HINTS ${MKL_LIBRARIES})
find_library( MKLCORE mkl_core HINTS ${MKL_LIBRARIES})
target_link_libraries(<module> ${MSOLVE} ${MKLCORE}
You should find out where the symbol is defined...
nm -PA ${MKL_LIBRARIES}/*.a | grep dtrnlsp_init
-Bill
More information about the CMake
mailing list