Bill Hoffman 写道:
> 董理 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
>   
Hi, Bill,

I have changed cmake configuration to link shared libraries of Intel
MKL, as following:

"
find_package(MKL REQUIRED)
include_directories(${MKL_INCLUDE_DIRS})
link_directories(${MKL_LIBRARIES})
target_link_libraries(<module>
mkl_intel_lp64
mkl_sequential
mkl_core
)
"
and it worked.

PS: I have written a simplie FindMKL.cmake.

Best regards,

DONG Li
_______________________________________________
Powered by www.kitware.com

Visit other Kitware open-source projects at 
http://www.kitware.com/opensource/opensource.html

Please keep messages on-topic and check the CMake FAQ at: 
http://www.cmake.org/Wiki/CMake_FAQ

Follow this link to subscribe/unsubscribe:
http://www.cmake.org/mailman/listinfo/cmake

Reply via email to