Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何使用CMake使用两个不同版本的Python

如何使用CMake使用两个不同版本的Python
EN

Stack Overflow用户
提问于 2020-05-19 05:27:06
回答 1查看 1.9K关注 0票数 0

上下文:

我正在构建一个CMake项目。这个CMake项目正在使用CLion远程开发在一个码头容器中运行,以便直接在码头上开发我的代码。因此,所有标头和库都在停靠程序中。

现在,由于我的项目被分成几个部分,所以我有一个“主”CMakelists.txt,它调用了下面的部分,如下所示:

- CMakelists.txt

- Project_part1

- Project_part2

- Project_part3

注意:单独地,构建每一个都很好。

问题是,Project_part3 需要 Python2作为解释器。但是上面的(part1,part2) 需要 Python3。

当只包含Project_part1 & Project_part2时,它通常构建在CLion上。当只包含Project_part3时,它通常构建在CLion上。

为了定义在构建过程中将使用哪个Python版本,使用并设置了一些环境:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ROS_PYTHON_VERSION
PYTHON_EXECUTABLE

Part_1和Part_2需要ROS_PYTHON_VERSION =3,PYTHON_EXECUTABLE = /usr/bin/python2 3 Part_2需要ROS_PYTHON_VERSION =2,PYTHON_EXECUTABLE =/usr/bin/python2 2

但是所发生的事情似乎是第一个获得包含/构建的强制使用它使用的版本。

我尝试的是(伪cmake代码):

set_env_var_for_part1_part2

正确的基于include_part1_part2 ->的CLion建筑。

set_env_var_for_3

set_env_var_for_part1_part2

正确的基于include_part1_part2 ->的CLion建筑。

set_env_var_for_part1_part2

set_env_var_for_3

正确的基于include_part1_part2 ->的CLion建筑。

->无错误

set_env_var_for_3

正确的基于include_part3 ->的CLion建筑。

set_env_var_for_3

set_env_var_for_part1_part2

正确的基于include_part3 ->的CLion建筑。

set_env_var_for_part1_part2

set_env_var_for_3

正确的基于include_part3 ->的CLion建筑。

->无错误

set_env_var_for_3

include_part3

set_env_var_for_part1_part2

include_part1_part2 ->错误构建在CLion上的part1_part2上。

set_env_var_for_part1_part2

include_part1_part2

set_env_var_for_3

include_part3 ->错误构建在CLion上的part3上。

..。不管我做什么都是错误。

从错误中。我认为我的话是理所当然的,因为他们各自找不到需要构建的包,而是因为他们使用了错误的python版本的。Part1和Part2需要Python3,Part3需要Python2。

在CLion IDE中没有环境变量集。

结论:环境变量的设置似乎变化不大。因此,我在CMakeCache.txt中找到了python:FILEPATH=/usr/bin/python,这可以解释为什么它是在这里设置的,并且一旦被找到,可能就不需要再次更新了。清理缓存,删除cmake构建调试也没有改变任何东西。

我卡住了。我需要一种方法让所有这些程序使用不同版本的python构建。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-05-19 05:27:06

实际上,CMakeCache.txt迫使python的路径成为第一个使用的路径。我试图更改环境变量,但我想在看到env变量之后,它会转到CMakeCache.txt并被使用,而不是实际获得环境变量。

因此,与我所做的:set( ENV{PYTHON_EXECUTABLE} /usr/bin/python3)改变Python不同的是,最好的方法是直接更改CMake中的变量:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
set( PYTHON_EXECUTABLE /usr/bin/python3 )
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61892227

复制
相关文章

相似问题

添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文