[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