Merge topic 'windows-export-all-fix-objlib'

13a6ff31 VS: Fix WINDOWS_EXPORT_ALL_SYMBOLS for object libraries
This commit is contained in:
Brad King 2016-07-22 09:17:48 -04:00 committed by CMake Topic Stage
commit 1fc340f0d4
4 changed files with 16 additions and 1 deletions

View File

@ -827,6 +827,7 @@ void cmGlobalVisualStudioGenerator::AddSymbolExportCommand(
cmSystemTools::Error("could not open ", objs_file.c_str());
return;
}
std::vector<std::string> objs;
for (std::vector<cmSourceFile const*>::const_iterator it =
objectSources.begin();
it != objectSources.end(); ++it) {
@ -836,6 +837,12 @@ void cmGlobalVisualStudioGenerator::AddSymbolExportCommand(
// It must exist because we populated the mapping just above.
assert(!map_it->second.empty());
std::string objFile = obj_dir + map_it->second;
objs.push_back(objFile);
}
gt->UseObjectLibraries(objs, configName);
for (std::vector<std::string>::iterator it = objs.begin(); it != objs.end();
++it) {
std::string objFile = *it;
// replace $(ConfigurationName) in the object names
cmSystemTools::ReplaceString(objFile, this->GetCMakeCFGIntDir(),
configName.c_str());

View File

@ -2,7 +2,9 @@ project(autoexport)
set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS TRUE)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${autoexport_BINARY_DIR}/bin)
add_subdirectory(sub)
add_library(autoexport SHARED hello.cxx world.cxx foo.c)
add_library(objlib OBJECT objlib.c)
set_property(TARGET objlib PROPERTY POSITION_INDEPENDENT_CODE 1)
add_library(autoexport SHARED hello.cxx world.cxx foo.c $<TARGET_OBJECTS:objlib>)
add_executable(say say.cxx)
if(MSVC)

View File

@ -0,0 +1,4 @@
int objlib()
{
return 7;
}

View File

@ -11,6 +11,7 @@ extern "C" {
int WINAPI foo();
// test regular C
int bar();
int objlib();
}
// test c++ functions
@ -39,6 +40,7 @@ int main()
foo();
printf("\n");
bar();
objlib();
printf("\n");
return 0;
}