2012-02-16 8 views
0

cmakeプロジェクトでopenmpフラグをNVCCに渡すにはどうしたらいいですか? このプロジェクトのCMakeLists.txtはこのように見えますが、コンパイルに失敗し、 "omp_get_wtime '"メッセージへの未定義の参照があります。Cmakeプロジェクトでopenmp CUDAフラグを指定する

cmake_minimum_required (VERSION 2.8.2) 

set (CMAKE_MODULE_PATH 
    "${CMAKE_SOURCE_DIR}/cmake" 
    ${CMAKE_MODULE_PATH} 
) 

find_package (CUDA 4.0 REQUIRED) 

if(OPENMP_FOUND) 
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}") 
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}") 
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} 
${OpenMP_EXE_LINKER_FLAGS}") endif() 

set (CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/bin) 
set (CMAKE_LIBRARY_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/lib) 
set (CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/lib) 

if(UNIX) 
    add_definitions(-DUNIX) 
endif(UNIX) 

add_subdirectory(xor) 

CUDA_BUILD_CLEAN_TARGET() 
+0

nvccを呼び出すときにnvccがホストコンパイラに渡すオプションは、-Xcompilerオプションを使用する必要があります。したがって、gccの場合、-Xcompiler = " - fopenmp"はOpenMPコンパイルを有効にします。どのようにしてCMakeを作ったのかわからない – talonmies

+0

私はちょうど、前のスクリプトにfind_package(OpenMP)を追加することがそのトリックをしたことを知りました。私よりも簡単です。 – fbielejec

+2

これらの回答をコメントではなく回答に入れることをお勧めします。 – harrism

答えて

0

私は、前のスクリプトにfind_package(OpenMP)を追加するとそのトリックが行われたことを知りました。

関連する問題