2012-02-16 74 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傳遞給主編譯器的任何選項必須通過-Xcompiler選項。所以對於gcc,-Xcompiler =「 - fopenmp」將打開OpenMP編譯。你如何讓CMake做到這一點,我不知道 – talonmies 2012-02-16 16:06:18

+0

我剛剛發現,將find_package(OpenMP)添加到前面的腳本中的確有竅門。雖然比我簡單。 – fbielejec 2012-02-16 16:11:30

+2

我建議把這些答案放在答案中而不是評論中。 – harrism 2012-02-17 06:47:07

回答

0

我剛剛發現將find_package(OpenMP)添加到前面的腳本中有竅門。