----- Original Message ----- > > > ----- Original Message ----- > > clin...@elemtech.com wrote: > > > > > > > > > > > ----- Original Message ----- > > >> Stephen Kelly wrote: > > >> > > >> > Is it possible to build multi-config frameworks with cmake at all? > > >> > > >> I also notice that the Framework unit test uses > > >> > > >> set_target_properties(foo PROPERTIES > > >> FRAMEWORK TRUE > > >> DEBUG_POSTFIX -d > > >> ) > > >> > > >> but the debug file is called 'foo', not 'foo-d'. If I use > > >> > > >> cmake --build . --target install --config Debug > > >> cmake --build . --target install --config Release > > >> > > >> the debug and release versions overwrite each other. > > >> > > >> Does this mean it has always been broken? Has no one ever tried to > > >> create > > >> a framework using cmake? > > > > > > In the build tree, I would expect "foo" not "foo-d" for the debug > > > framework. > > > And in the build tree, it is possible to differentiate the release from > > > debug simply by having two "foo.framework/foo". One will be in the > > > Release folder and one in the Debug folder, and a Debug build will use > > > the > > > one from the Debug folder, while the release build will use the one from > > > the Release folder. > > > > That indeed appears to be what happens. > > But, I personally don't see a problem with there being a "foo.framework/foo" > and a "foo-d.framework/foo-d". > At install time, they would not overwrite each other and the export file > would need to list both of them. > > > > > > > > > For the install tree, I don't see how it is known which configurations > > > will be installed. > > > > I'm not familiar with xcode, so I assumed that if you install it would > > install all configurations, or you would specify which you want to install. > > Xcode works in one configuration at a time. > The install target is the same way, by installing only one configuration at a > time. > > > > > When I use the command line I use > > > > cmake --build . --target install --config Debug > > > > so it is specified. > > That one configuration was specified, yes. But it isn't known if the Release > one will also be installed. > If it is known they are both being installed, and one wanted them to both go > into the same framework, then the debug one can be renamed to and the burden > put on the user to specify DYLD_IMAGE_SUFFIX to run their application with > the debug library. > If only the Debug configuration is installed, and it was still renamed, you'd > have a broken framework. > > > > > So, I don't know what you mean here. Can you be more specific, keeping in > > mind I don't know xcode? > > The behavior is basically the same as visual studio, if you know that, with > the addition of this framework concept. > While the whole build system supports multiple configurations, the user is > only in one configuration at a given time. > In contrast, building Qt can be done with makefiles that compile multiple > configurations at the same time, but in practice, that kind of setup seems > rare. > > > > > Assuming there is some unavoidable reason that the configuration is not > > known when installing, does that mean that frameworks which contain a foo > > and a foo_debug can not be created by cmake? > > Yeah, that would seem to be the case. Unless someone has done it and can > tell us how. > Again, I wouldn't mind having a foo.framework/foo and foo-d.framework/foo-d > which avoids this whole problem. >
Actually, I just realized a foo-d.framework/foo-d introduces another problem. In the code, you'd have to do a #include <foo-d/foo.h> for a debug build and a #include <foo/foo.h> for a release build, which I wouldn't want. Clint -- Powered by www.kitware.com Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ Follow this link to subscribe/unsubscribe: http://www.cmake.org/mailman/listinfo/cmake