标签: vsprops

从同一个项目构建DLL和静态库

我在Visual Studio 2005下编译了许多本机C++库(Win32,没有MFC),并在许多解决方案中使用.

我希望能够选择编译并将它们链接为静态库或DLL,具体取决于我正在使用它们的特定解决方案的需求.

最好的方法是什么?我考虑过这些方法:

1.多个项目文件

  • 示例:"foo_static.vcproj"vs"foo_dll.vcproj"
  • 亲:很容易为新库生成,而不是过多的手动vcproj munging.
  • Con:两个地方的设置,文件列表等太容易失去同步.

2.单个项目文件,多个配置

  • 示例:"Debug | Win32"vs"Debug DLL | Win32"等.
  • Pro:文件列表更容易保持同步; 编译选项更容易保持同步
  • Con:我为Win32和Smart Device目标构建,所以我已经有多个配置; 我不想让我的组合爆炸更糟("FooPhone的静态库| WinMobile 6","FooPhone的动态库| WinMobile 6","BarPda的静态库| WinMobile 6"等.
  • 更糟糕的是:VS 2005有一个坏习惯,假设你有一个为平台"Foo"定义的配置,那么你真的需要它适用于你的解决方案中的所有其他平台,并且随意地插入所有配置/平台配置的所有排列受影响的vcproj文件,无论是否有效.(向MS提交的Bug;作为WONTFIX关闭.)

3.单个项目文件,通过vsprops文件选择静态或动态

  • 示例:将相应的vcproj片段存储在属性表文件中,然后在需要静态库时将"FooApp静态库"属性表应用于配置/平台组合,并在需要DLL时应用"FooApp DLL"属性表.
  • 优点:这就是我真正想要做的!
  • 缺点:似乎不可能. 似乎静态和动态库之间切换的.vcproj属性(Configuration元素的ConfigurationType属性)不能被.vsprops文件覆盖.Microsoft针对这些文件发布的架构仅列出<Tool>和<UserMacro>元素.

编辑:如果有人建议,我也尝试了一个更"聪明"的#3版本,其中我定义了一个包含名为"ModuleConfigurationType"的UserMacro的.vsprops,其值为"2"(DLL)或" 4"(静态库),并更改了.vcproj中的配置ConfigurationType="$(ModuleConfigurationType)".Visual Studio以静默方式无需警告即可删除该属性并替换为该属性ConfigurationType="1".太有帮助了!

我错过了更好的解决方案吗?

c++ winapi visual-studio-2005 projects-and-solutions vsprops

21
推荐指数
2
解决办法
1万
查看次数

Vue,有没有一种方法可以在没有URL参数的情况下在路由之间传递数据?

我正在寻找如何在两个单独的组件(而不是父级和子级)之间秘密地传递数据,而不在我的Vue2应用程序中使用URL参数的方法。这并不意味着我要传递秘密,而是我不希望用户看到它(仅出于UI考虑)。

我知道Vue有Props,但它们旨在在父子组件之间传递数据。就我而言,我的URL会更改,但我不想通过可见参数传递数据。

有人声称这里使用没有URL参数的道具但我无法复制有效的解决方案(每次都变得不确定)。

我还签出了这些选项,但是它们都使用了我们知道的URL或查询参数。

一个丑陋的解决方案是将数据写入本地存储,然后在其中读取,但这会产生大量的开销和复杂性(例如,如果我只希望一次读取该数据,等等)。

有没有更优雅的解决方案?

谢谢!

javascript vsprops vue.js

10
推荐指数
2
解决办法
6139
查看次数

CMake相当于Visual Studio的属性表(.vsprops)

我正在尝试从Visual Studio迁移到Jetbrains(非常棒)的CLion IDE,它使用CMake来组织项目.

到目前为止,过渡是顺利的:创建CMake项目并将它们导入CLion很容易,我可以开始在一个平台上编码然后继续在另一个平台上没有问题.

但是,Visual Studio中的一个方面,我找不到一个相当于CMake的是属性表:我使用它们主要用于保持包括目录路径和图书馆链接库(即一个.vsprops文件,每个库,例如OpenCV.vsprops,Boost.vsprops,等等.).

这样,在VS中,我可以.vsprops在不同项目之间共享库文件,而无需每次都配置路径/库.

CMake是否有与Visual Studio属性表类似的机制?如何将库的includes/lib存储在CMake可解析文件中,然后在CMakeLists.txt中"导入"它以便链接到库?

基本上,我想要做的是:

  1. 为给定的库创建"cmake属性表"(缺少更好的名称).
  2. 然后,在CMakeLists.txt中写下类似的内容link_target_to_libs(myTarget "path/to/propertySheet1" "path/to/propertySheet2" ...).

c++ cmake vsprops visual-studio clion

5
推荐指数
1
解决办法
1296
查看次数