为了完成一个项目的长时间编码会话,我想测试我的 CPP 项目是否可以在操作系统的安排上编译。
我一直在Win10下工作。编译得很好。
我试过树莓派。编译得很好。我将我的项目的单独副本重新下载到 Win10 客户端,运行 cmake-gui,然后打开该项目:我在解决方案资源管理器中的文件夹结构全部消失了。
所以我开始挖掘,显然这个结构保存在 CMakeLists.txt 的命令中source_group。所以我开始在我的 cmake 列表中添加更多的 source_groupings,并且由于某种原因我的分组不会被接受。
例子:
source_group("game\\entitysystem" FILES ${entitysystem_SRC}) // Existing grouping
source_group("game\\entitysystem\\components" FILES ${components_SRC}) // My new grouping
我的 glob 是这样的:
file(GLOB components_SRC
"game/components/*.h"
"game/components/*.cpp"
)
file(GLOB entitysystem_SRC
"game/entitysystem/*.h"
"game/entitysystem/*.cpp"
)
我确实相信我的 GLOB 是正确的,因为新的项目克隆编译得很好。只是 Visual Studio 的解决方案资源管理器中新结构的每个部分似乎都丢失了。是的,我已经清除了 Cmake 的缓存并重新生成了项目。不会改变它。
编辑:
我确实在我的 source_group 中犯了一个错误,因为它不应该将组件放在实体系统下,但是,为什么在 Visual Studio 中没有创建任何过滤器?
我试图找到一种方法来动态存储我为 shell 脚本传递的所有参数在数组中。当我必须循环遍历每个参数以进一步使用它们时,这会有所帮助。
这就是我的问题的答案。
#!bin/bash
#Overloop alle gegeven argumenten en sla ze op in arg(plaatsvhargument)
arr=( "$@" )
#Code om te testen of het wel werkt
y=0
while [[ $y -lt $# ]]
do
val=${arr[$y]}
echo $val
(( y++))
done
Run Code Online (Sandbox Code Playgroud)
我知道我可以这样做,从数组中取出每个参数。
for i in ${arr[@]}
do
echo $i
done
Run Code Online (Sandbox Code Playgroud)
我的问题是,当我运行脚本时,我最终保存了参数的位置,并且在此过程中丢失了一个参数。例子:
bash testscript.sh 1 2 2 3 1 gives me 2 2 3 1 (empty)
Run Code Online (Sandbox Code Playgroud)
我做错了什么,你们对我的问题有什么解决办法吗?