mirror of
https://github.com/reactos/CMake.git
synced 2024-12-04 17:56:26 +00:00
VS: Improve workaround for CUDA -Xcompiler placement bug
In commit v3.9.0-rc1~431^2~6 (VS: Place CUDA host compiler options in proper project file fields, 2017-03-07) we worked around a bug in the CUDA VS integration by dropping `AdditionalCompilerOptions`. However, this silently drops `-Xcompiler=` options given by the user that don't map to one of CudaCompile's dedicated settings. Improve the workaround to instead put the remaining `AdditionalCompilerOptions` into the `AdditionalOptions` field behind `-Xcompiler=` ourselves.
This commit is contained in:
parent
f2059585e6
commit
3b75421515
@ -2523,9 +2523,16 @@ bool cmVisualStudio10TargetGenerator::ComputeCudaOptions(
|
|||||||
cudaOptions.AddTable(gg->GetCudaHostFlagTable());
|
cudaOptions.AddTable(gg->GetCudaHostFlagTable());
|
||||||
cudaOptions.Reparse("AdditionalCompilerOptions");
|
cudaOptions.Reparse("AdditionalCompilerOptions");
|
||||||
|
|
||||||
// `CUDA 8.0.targets` places these before nvcc! Just drop whatever
|
// `CUDA 8.0.targets` places AdditionalCompilerOptions before nvcc!
|
||||||
// did not parse and hope it works.
|
// Pass them through -Xcompiler in AdditionalOptions instead.
|
||||||
cudaOptions.RemoveFlag("AdditionalCompilerOptions");
|
if (const char* acoPtr = cudaOptions.GetFlag("AdditionalCompilerOptions")) {
|
||||||
|
std::string aco = acoPtr;
|
||||||
|
cudaOptions.RemoveFlag("AdditionalCompilerOptions");
|
||||||
|
if (!aco.empty()) {
|
||||||
|
aco = this->LocalGenerator->EscapeForShell(aco, false);
|
||||||
|
cudaOptions.AppendFlag("AdditionalOptions", "-Xcompiler=" + aco);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
cudaOptions.FixCudaCodeGeneration();
|
cudaOptions.FixCudaCodeGeneration();
|
||||||
|
|
||||||
|
@ -15,6 +15,10 @@ set(CMAKE_CUDA_STANDARD 11)
|
|||||||
|
|
||||||
add_library(CUDASeparateLibA STATIC file1.cu file2.cu file3.cu)
|
add_library(CUDASeparateLibA STATIC file1.cu file2.cu file3.cu)
|
||||||
|
|
||||||
|
if(CMAKE_CUDA_SIMULATE_ID STREQUAL "MSVC")
|
||||||
|
target_compile_options(CUDASeparateLibA PRIVATE -Xcompiler=-bigobj)
|
||||||
|
endif()
|
||||||
|
|
||||||
#Having file4/file5 in a shared library causes serious problems
|
#Having file4/file5 in a shared library causes serious problems
|
||||||
#with the nvcc linker and it will generate bad entries that will
|
#with the nvcc linker and it will generate bad entries that will
|
||||||
#cause a segv when trying to run the executable
|
#cause a segv when trying to run the executable
|
||||||
|
Loading…
Reference in New Issue
Block a user