From 253dafd025d84849caae90b2407d444e304a571d Mon Sep 17 00:00:00 2001 From: Alexander Neundorf Date: Sat, 26 Sep 2009 04:26:28 -0400 Subject: Fix bug #9529. Set the working_dir entry in the codeblocks project file of executable targets to the directory where the executable is created. Then when running CB, executing the target (not building), will run it from that directory. Alex --- Source/cmExtraCodeBlocksGenerator.cxx | 25 +++++++++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/Source/cmExtraCodeBlocksGenerator.cxx b/Source/cmExtraCodeBlocksGenerator.cxx index 203e206..2bfb8cf 100644 --- a/Source/cmExtraCodeBlocksGenerator.cxx +++ b/Source/cmExtraCodeBlocksGenerator.cxx @@ -544,11 +544,32 @@ void cmExtraCodeBlocksGenerator::AppendTarget(cmGeneratedFileStream& fout, if (target!=0) { int cbTargetType = this->GetCBTargetType(target); + std::string workingDir = makefile->GetStartOutputDirectory(); + if ( target->GetType()==cmTarget::EXECUTABLE) + { + // Determine the directory where the executable target is created, and + // set the working directory to this dir. + const char* runtimeOutputDir = makefile->GetDefinition( + "CMAKE_RUNTIME_OUTPUT_DIRECTORY"); + if (runtimeOutputDir != 0) + { + workingDir = runtimeOutputDir; + } + else + { + const char* executableOutputDir = makefile->GetDefinition( + "EXECUTABLE_OUTPUT_PATH"); + if (executableOutputDir != 0) + { + workingDir = executableOutputDir; + } + } + } + const char* buildType = makefile->GetDefinition("CMAKE_BUILD_TYPE"); fout<<"