Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/134.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
跨平台开发? 我正在寻找一种解决方案,它允许我用C++对Linux和Windows进行编码。_C++_Visual Studio 2008_Boost_Cross Platform_Cmake - Fatal编程技术网

跨平台开发? 我正在寻找一种解决方案,它允许我用C++对Linux和Windows进行编码。

跨平台开发? 我正在寻找一种解决方案,它允许我用C++对Linux和Windows进行编码。,c++,visual-studio-2008,boost,cross-platform,cmake,C++,Visual Studio 2008,Boost,Cross Platform,Cmake,在Windows上,我使用Visual Studio(我在Windows上尝试了其他东西,但我使用的是,据我所知,这是最好的解决方案) 在Linux上我使用(我非常喜欢) 我的问题是,我希望该项目独立于VisualStudio和NetBeans 有一段时间我认为这是解决办法,但是学习过程太重要了,我宁愿花时间编码,也不愿用CMake学习所有技巧。所以我决定了。它在Linux上运行得很好,但在VisualStudio上却很糟糕 我在Windows上创建了一个小的Hello World程序。我创建了

在Windows上,我使用Visual Studio(我在Windows上尝试了其他东西,但我使用的是,据我所知,这是最好的解决方案)

在Linux上我使用(我非常喜欢)

我的问题是,我希望该项目独立于VisualStudio和NetBeans

有一段时间我认为这是解决办法,但是学习过程太重要了,我宁愿花时间编码,也不愿用CMake学习所有技巧。所以我决定了。它在Linux上运行得很好,但在VisualStudio上却很糟糕

我在Windows上创建了一个小的Hello World程序。我创建了一个VisualStudioMakefile项目,在它正确编译和链接的同时。我可以运行可执行文件,但不能从Visual Studio运行,因为Visual Studio找不到可执行文件(无论我做什么)。我也不能调试。当我得到一条编译错误消息时,我也看不到它。从VisualStudio中我所能看到的是,有一个makefile操作正在进行,并且有一个错误(即使程序已经创建并运行良好)

我浏览Boost.Jam文档已经有一段时间了,但让我们面对现实吧,它非常糟糕(难怪没有很多人听说过它),或者我非常不适合这份工作(这意味着愚蠢的lol,但为什么很少人听说过它)

我有三个问题:

我想知道是否有人听说过一个使用Boost.Jam和VisualStudio的项目?如果是,我可以看一下吗

有没有一个真正的VisualStudio集成工具


有多少人认为学习(正确地)使用CMake需要花费大量时间?如果有任何代码可以加速,

< p>如果我在Windows和Linux中用C++编写代码,我会为Linux编写代码,并用最小的CygWin安装程序捆绑应用程序。

< P>如果我在C++中为Windows和Linux编写代码,我会为Linux编写代码,并用最小的cygwin设置捆绑应用程序。

您应该花时间学习CMake,并加快学习过程购买/阅读


如果您有问题,您应该使用激活的CMake(2009年8月有600条消息)

您应该花时间学习CMake并加快学习过程购买/阅读


如果您有问题,您应该使用CMake,它处于活动状态(2009年8月有约600条消息)

为Ben投票。我们有一家主要的供应商,他们为商品硬件访问提供了旧Unix代码的Windows端口,这正是他们所做的


Emacs在这两种平台上都可以正常工作,GNU也可以。如果您需要GUI,我会使用GTK+而不是Cygnus和X端口。

请为Ben投票。我们有一家主要的供应商,他们为商品硬件访问提供了旧Unix代码的Windows端口,这正是他们所做的


Emacs在这两种平台上都可以正常工作,GNU也可以。如果您需要GUI,我会使用GTK+而不是Cygnus和X端口。

Qt和Qt Creator看起来是解决您问题的好方法。qmake可以生成vcproj文件和本机Linux makefile。

Qt和Qt-Creator看起来是解决问题的好办法。qmake可以生成vcproj文件和本机Linux makefiles。

您确定查看了正确的文档吗?你说了“Boost.Jam”,所以很有可能你看错了东西。请访问


我确信很多人使用Boost.Build在VisualStudio中没有问题。您可以尝试在命令行上运行该程序吗?可能有一些Visual Studio决定不显示的错误消息

您确定查看的文档是正确的吗?你说了“Boost.Jam”,所以很有可能你看错了东西。请访问


我确信很多人使用Boost.Build在VisualStudio中没有问题。您可以尝试在命令行上运行该程序吗?可能有一些Visual Studio决定不显示的错误消息

我对NetBeans了解不多,但如果您想同时为Windows和Linux开发,并在Windows上使用Visual Studio,那么CMake确实是唯一明智的选择。现在我已经使用它好几年了,我猜不出它为我维护makefiles和project文件节省了多少时间。

我对NetBeans不太了解,但是如果你想同时为Windows和Linux开发,并在Windows上使用Visual Studio,那么CMake是唯一明智的选择,真的。我已经使用它好几年了,我猜不出它为我维护makefiles和project文件节省了多少时间。

我也推荐使用CMake。一开始有点吓人,但你会逐渐适应它。对于初学者来说,编写跨平台脚本仍然相当容易,即使它们不像专家所做的那样漂亮或最优。与CppUnit(用于单元测试)和Hudson(构建管理)的集成使得能够在短时间内配置一个连续集成框架。

我也建议使用CMake。一开始有点吓人,但你会逐渐适应它。对于初学者来说,编写跨平台脚本仍然相当容易,即使它们不像专家所做的那样漂亮或最优。与CppUnit(用于单元测试)和Hudson(构建管理)的集成使我们能够在短时间内配置一个连续集成框架。

几个月前,我在Fosdem看到了一个CMake演示,它看起来非常令人印象深刻。我认为花在学习上的时间可能是值得的


另一方面,根据我个人的经验,在每个平台上维护单独的项目文件是一种完全可以接受的方式。

几个月前,我在Fosdem上看过一个CMake演示,它看起来非常令人印象深刻。我认为花在学习上的时间可能是值得的

另一方面,根据我个人的经验,在每个平台上维护单独的项目文件是一种完全可以接受的方式。

唯一的非trivi
if(WIN32) 
    SET(CMAKE_BUILD_TYPE "Release") #force release for win32, no motive to debug on win32

    SET(CMAKE_CXX_FLAGS_RELEASE  "-march=pentium4 -mtune=pentium4 -mwindows -DNDEBUG -mno-align-stringops -minline-stringops-dynamically -fno-ident -freorder-blocks-and-partition -finline-limit=700 -mfpmath=sse  -ftree-loop-distribution -floop-block -floop-interchange -floop-strip-mine -findirect-inlining -ftree-switch-conversion ${BASE_CXX_FLAGS}")

    SET(WIN32_BASE /home/win32-devel)
    SET(QT_LIB ${WIN32_BASE}/qt-win-opensource-src-4.5.3/lib/)

    SET(CMAKE_CXX_COMPILER i686-pc-mingw32-g++)
    SET(CMAKE_AR i686-pc-mingw32-ar)
    SET(CMAKE_RANLIB  i686-pc-mingw32-ranlib)
    SET(CMAKE_LINKER i686-pc-mingw32-ld)

    ADD_CUSTOM_COMMAND( OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/app_icon.o
                        COMMAND i686-pc-mingw32-windres
                            -I${CMAKE_CURRENT_SOURCE_DIR}
                            -o${CMAKE_CURRENT_BINARY_DIR}/app_icon.o
                            -i${CMAKE_CURRENT_SOURCE_DIR}/icons/win32_icon.rc
                        )

    SET(OPENSSL_LIBRARIES  ${WIN32_BASE}/openssl-0.9.8l/libeay32.dll;${WIN32_BASE}/openssl-0.9.8l/libssl32.dll)
    SET(QT_LIBRARIES  ${QT_LIB}QtCore4.dll;${QT_LIB}/QtGui4.dll)
    SET(CMAKE_EXECUTABLE_SUFFIX ".exe")

    include_directories(${CMAKE_CURRENT_BINARY_DIR} ${QT_LIB}../include ${WIN32_BASE}/openssl-0.9.8l/include)
    message("Building For   : Win32")
else()
    include_directories(${CMAKE_CURRENT_BINARY_DIR} ${QT_INCLUDES} ${OPENSSL_INCLUDE_DIR})
    message("Building For   : Linux")
endif()
SET(CMAKE_SHARED_LIBRARY_LINK_CXX_FLAGS "-Wl,--no-undefined -static-libgcc -Wl,-O1 -Wl,--as-needed -Wl,--sort-common -s")